একটি মার্কারের জন্য একটি তথ্য উইন্ডো প্রদর্শন করুন, একটি মার্কারের জন্য একটি তথ্য উইন্ডো প্রদর্শন করুন, একটি মার্কারের জন্য একটি তথ্য উইন্ডো প্রদর্শন করুন, একটি চিহ্নিতকারীর জন্য একটি তথ্য উইন্ডো প্রদর্শন করুন

এই উদাহরণটি অস্ট্রেলিয়ার তিনটি প্রধান শহরের মার্কার প্রদর্শন করে। যখন ব্যবহারকারী একটি মার্কার ট্যাপ করে, একটি তথ্য উইন্ডো প্রদর্শিত হয়।

শুরু করুন

আপনি নমুনা কোড চেষ্টা করার আগে, আপনি আপনার উন্নয়ন পরিবেশ কনফিগার করতে হবে. আরও তথ্যের জন্য, iOS কোড নমুনার জন্য মানচিত্র SDK দেখুন।

কোডটি দেখুন

সুইফট

import GoogleMaps
import UIKit

final class MarkerInfoWindowViewController: UIViewController {

  private let sydneyMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -33.8683, longitude: 151.2086))

  private let melbourneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -37.81969, longitude: 144.966085))

  private let brisbaneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -27.4710107, longitude: 153.0234489))

  private lazy var contentView: UIImageView = {
    return UIImageView(image: UIImage(named: "aeroplane"))
  }()

  override func loadView() {
    let cameraPosition = GMSCameraPosition(latitude: -37.81969, longitude: 144.966085, zoom: 4)
    let mapView = GMSMapView(frame: .zero, camera: cameraPosition)
    mapView.delegate = self
    view = mapView

    sydneyMarker.title = "Sydney"
    sydneyMarker.snippet = "Population: 4,605,992"
    sydneyMarker.map = mapView

    melbourneMarker.title = "Melbourne"
    melbourneMarker.snippet = "Population: 4,169,103"
    melbourneMarker.map = mapView

    brisbaneMarker.title = "Brisbane"
    brisbaneMarker.snippet = "Population: 2,189,878"
    brisbaneMarker.map = mapView
  }
}

extension MarkerInfoWindowViewController: GMSMapViewDelegate {
  func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
    if marker == sydneyMarker {
      return contentView
    }
    return nil
  }

  func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? {
    if marker == brisbaneMarker {
      return contentView
    }
    return nil
  }

  func mapView(_ mapView: GMSMapView, didCloseInfoWindowOf marker: GMSMarker) {
    showToast(message: "Info window for marker \(marker.title ?? "") closed.")
  }

  func mapView(_ mapView: GMSMapView, didLongPressInfoWindowOf marker: GMSMarker) {
    showToast(message: "Info window for marker \(marker.title ?? "") long pressed.")
  }
}

extension UIViewController {
  func showToast(message: String) {
    let toast = UIAlertController(title: nil, message: message, preferredStyle: .alert)
    present(
      toast, animated: true,
      completion: {
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(2)) {
          toast.dismiss(animated: true)
        }
      })
  }
}
      

উদ্দেশ্য-C

#import "GoogleMapsDemos/Samples/MarkerInfoWindowViewController.h"

#import "GoogleMapsDemos/UIViewController+GMSToastMessages.h"
#import <GoogleMaps/GoogleMaps.h>

@interface MarkerInfoWindowViewController () <GMSMapViewDelegate>

@end

@implementation MarkerInfoWindowViewController {
  GMSMarker *_sydneyMarker;
  GMSMarker *_melbourneMarker;
  GMSMarker *_brisbaneMarker;
  UIView *_contentView;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-37.81969
                                                          longitude:144.966085
                                                               zoom:4];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  _sydneyMarker = [[GMSMarker alloc] init];
  _sydneyMarker.title = @"Sydney";
  _sydneyMarker.snippet = @"Population: 4,605,992";
  _sydneyMarker.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
  _sydneyMarker.map = mapView;
  NSLog(@"sydneyMarker: %@", _sydneyMarker);

  _melbourneMarker.map = nil;
  _melbourneMarker = [[GMSMarker alloc] init];
  _melbourneMarker.title = @"Melbourne";
  _melbourneMarker.snippet = @"Population: 4,169,103";
  _melbourneMarker.position = CLLocationCoordinate2DMake(-37.81969, 144.966085);
  _melbourneMarker.map = mapView;
  NSLog(@"melbourneMarker: %@", _melbourneMarker);

  _brisbaneMarker.map = nil;
  _brisbaneMarker = [[GMSMarker alloc] init];
  _brisbaneMarker.title = @"Brisbane";
  _brisbaneMarker.snippet = @"Population: 2,189,878";
  _brisbaneMarker.position = CLLocationCoordinate2DMake(-27.4710107, 153.0234489);
  _brisbaneMarker.map = mapView;
  NSLog(@"brisbaneMarker: %@", _brisbaneMarker);

  _contentView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"aeroplane"]];

  mapView.delegate = self;
  self.view = mapView;
}

#pragma mark GMSMapViewDelegate

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker {
  if (marker == _sydneyMarker) {
    return _contentView;
  }
  return nil;
}

- (UIView *)mapView:(GMSMapView *)mapView markerInfoContents:(GMSMarker *)marker {
  if (marker == _brisbaneMarker) {
    return _contentView;
  }
  return nil;
}

- (void)mapView:(GMSMapView *)mapView didCloseInfoWindowOfMarker:(GMSMarker *)marker {
  NSString *message =
      [NSString stringWithFormat:@"Info window for marker %@ closed.", marker.title];
  [self gms_showToastWithMessage:message];
}

- (void)mapView:(GMSMapView *)mapView didLongPressInfoWindowOfMarker:(GMSMarker *)marker {
  NSString *message =
      [NSString stringWithFormat:@"Info window for marker %@ long pressed.", marker.title];
  [self gms_showToastWithMessage:message];
}

@end
      

স্থানীয়ভাবে সম্পূর্ণ নমুনা অ্যাপটি চালান

iOS নমুনা অ্যাপের জন্য Maps SDK GitHub থেকে ডাউনলোড সংরক্ষণাগার হিসেবে উপলব্ধ। iOS নমুনা অ্যাপের জন্য Maps SDK ইনস্টল এবং চেষ্টা করতে এই ধাপগুলি অনুসরণ করুন।

  1. স্থানীয় ডিরেক্টরিতে নমুনা সংগ্রহস্থল ক্লোন করতে git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git চালান।
  2. একটি টার্মিনাল উইন্ডো খুলুন, যে ডিরেক্টরিতে আপনি নমুনা ফাইলগুলি ক্লোন করেছেন সেখানে নেভিগেট করুন এবং GoogleMaps ডিরেক্টরিতে ড্রিল ডাউন করুন:

    সুইফট

    cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
    pod install
    open GoogleMapsSwiftDemos.xcworkspace

    উদ্দেশ্য-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps
    pod install
    open GoogleMapsDemos.xcworkspace
  3. Xcode-এ, বর্তমান স্কিমের সাথে অ্যাপটি তৈরি করতে কম্পাইল বোতাম টিপুন। বিল্ডটি একটি ত্রুটি তৈরি করে, আপনাকে সুইফটের জন্য SDKConstants.swift ফাইলে অথবা Objective-C-এর জন্য SDKDemoAPIKey.h ফাইলে আপনার API কী লিখতে অনুরোধ করে।
  4. আপনার যদি এখনও একটি API কী না থাকে, তাহলে Google ক্লাউড কনসোলে একটি প্রকল্প সেট আপ করতে নির্দেশাবলী অনুসরণ করুন এবং একটি API কী পান৷ ক্লাউড কনসোলে কী কনফিগার করার সময়, শুধুমাত্র আপনার অ্যাপ কী ব্যবহার করতে পারে তা নিশ্চিত করতে আপনি নমুনা অ্যাপের বান্ডেল শনাক্তকারীর কী সীমাবদ্ধ করতে পারেন। SDK স্যাম্পল অ্যাপের ডিফল্ট বান্ডেল আইডেন্টিফায়ার হল com.example.GoogleMapsDemos
  5. উদ্দেশ্য-C-এর জন্য Swift বা SDKDemoAPIKey.h ফাইলের জন্য SDKConstants.swift ফাইল সম্পাদনা করুন এবং apiKey বা kAPIKey ধ্রুবকের সংজ্ঞাতে আপনার API কী পেস্ট করুন। যেমন:

    সুইফট

    static let apiKey = "YOUR_API_KEY"

    উদ্দেশ্য-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. SDKConstants.swift ফাইল (Swift) বা SDKDemoAPIKey.h ফাইলে (উদ্দেশ্য-সি), নিম্নলিখিত লাইনটি সরান, কারণ এটি ব্যবহারকারী-সংজ্ঞায়িত সমস্যা নিবন্ধন করতে ব্যবহৃত হয়:

    সুইফট

    #error (Register for API Key and insert here. Then delete this line.)

    উদ্দেশ্য-C

    #error Register for API Key and insert here.
  7. নির্মাণ এবং প্রকল্প চালানো. iOS সিমুলেটর উইন্ডোটি প্রদর্শিত হবে, ম্যাপ SDK ডেমোগুলির একটি তালিকা দেখাচ্ছে৷
  8. iOS এর জন্য Maps SDK-এর একটি বৈশিষ্ট্য নিয়ে পরীক্ষা করার জন্য প্রদর্শিত বিকল্পগুলির মধ্যে একটি বেছে নিন।
  9. GoogleMapsDemos কে আপনার অবস্থান অ্যাক্সেস করার অনুমতি দেওয়ার জন্য অনুরোধ করা হলে, অনুমতি দিন নির্বাচন করুন।
,
এই উদাহরণটি অস্ট্রেলিয়ার তিনটি প্রধান শহরের মার্কার প্রদর্শন করে। যখন ব্যবহারকারী একটি মার্কার ট্যাপ করে, একটি তথ্য উইন্ডো প্রদর্শিত হয়।

শুরু করুন

আপনি নমুনা কোড চেষ্টা করার আগে, আপনি আপনার উন্নয়ন পরিবেশ কনফিগার করতে হবে. আরও তথ্যের জন্য, iOS কোড নমুনার জন্য মানচিত্র SDK দেখুন।

কোডটি দেখুন

সুইফট

import GoogleMaps
import UIKit

final class MarkerInfoWindowViewController: UIViewController {

  private let sydneyMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -33.8683, longitude: 151.2086))

  private let melbourneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -37.81969, longitude: 144.966085))

  private let brisbaneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -27.4710107, longitude: 153.0234489))

  private lazy var contentView: UIImageView = {
    return UIImageView(image: UIImage(named: "aeroplane"))
  }()

  override func loadView() {
    let cameraPosition = GMSCameraPosition(latitude: -37.81969, longitude: 144.966085, zoom: 4)
    let mapView = GMSMapView(frame: .zero, camera: cameraPosition)
    mapView.delegate = self
    view = mapView

    sydneyMarker.title = "Sydney"
    sydneyMarker.snippet = "Population: 4,605,992"
    sydneyMarker.map = mapView

    melbourneMarker.title = "Melbourne"
    melbourneMarker.snippet = "Population: 4,169,103"
    melbourneMarker.map = mapView

    brisbaneMarker.title = "Brisbane"
    brisbaneMarker.snippet = "Population: 2,189,878"
    brisbaneMarker.map = mapView
  }
}

extension MarkerInfoWindowViewController: GMSMapViewDelegate {
  func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
    if marker == sydneyMarker {
      return contentView
    }
    return nil
  }

  func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? {
    if marker == brisbaneMarker {
      return contentView
    }
    return nil
  }

  func mapView(_ mapView: GMSMapView, didCloseInfoWindowOf marker: GMSMarker) {
    showToast(message: "Info window for marker \(marker.title ?? "") closed.")
  }

  func mapView(_ mapView: GMSMapView, didLongPressInfoWindowOf marker: GMSMarker) {
    showToast(message: "Info window for marker \(marker.title ?? "") long pressed.")
  }
}

extension UIViewController {
  func showToast(message: String) {
    let toast = UIAlertController(title: nil, message: message, preferredStyle: .alert)
    present(
      toast, animated: true,
      completion: {
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(2)) {
          toast.dismiss(animated: true)
        }
      })
  }
}
      

উদ্দেশ্য-C

#import "GoogleMapsDemos/Samples/MarkerInfoWindowViewController.h"

#import "GoogleMapsDemos/UIViewController+GMSToastMessages.h"
#import <GoogleMaps/GoogleMaps.h>

@interface MarkerInfoWindowViewController () <GMSMapViewDelegate>

@end

@implementation MarkerInfoWindowViewController {
  GMSMarker *_sydneyMarker;
  GMSMarker *_melbourneMarker;
  GMSMarker *_brisbaneMarker;
  UIView *_contentView;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-37.81969
                                                          longitude:144.966085
                                                               zoom:4];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  _sydneyMarker = [[GMSMarker alloc] init];
  _sydneyMarker.title = @"Sydney";
  _sydneyMarker.snippet = @"Population: 4,605,992";
  _sydneyMarker.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
  _sydneyMarker.map = mapView;
  NSLog(@"sydneyMarker: %@", _sydneyMarker);

  _melbourneMarker.map = nil;
  _melbourneMarker = [[GMSMarker alloc] init];
  _melbourneMarker.title = @"Melbourne";
  _melbourneMarker.snippet = @"Population: 4,169,103";
  _melbourneMarker.position = CLLocationCoordinate2DMake(-37.81969, 144.966085);
  _melbourneMarker.map = mapView;
  NSLog(@"melbourneMarker: %@", _melbourneMarker);

  _brisbaneMarker.map = nil;
  _brisbaneMarker = [[GMSMarker alloc] init];
  _brisbaneMarker.title = @"Brisbane";
  _brisbaneMarker.snippet = @"Population: 2,189,878";
  _brisbaneMarker.position = CLLocationCoordinate2DMake(-27.4710107, 153.0234489);
  _brisbaneMarker.map = mapView;
  NSLog(@"brisbaneMarker: %@", _brisbaneMarker);

  _contentView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"aeroplane"]];

  mapView.delegate = self;
  self.view = mapView;
}

#pragma mark GMSMapViewDelegate

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker {
  if (marker == _sydneyMarker) {
    return _contentView;
  }
  return nil;
}

- (UIView *)mapView:(GMSMapView *)mapView markerInfoContents:(GMSMarker *)marker {
  if (marker == _brisbaneMarker) {
    return _contentView;
  }
  return nil;
}

- (void)mapView:(GMSMapView *)mapView didCloseInfoWindowOfMarker:(GMSMarker *)marker {
  NSString *message =
      [NSString stringWithFormat:@"Info window for marker %@ closed.", marker.title];
  [self gms_showToastWithMessage:message];
}

- (void)mapView:(GMSMapView *)mapView didLongPressInfoWindowOfMarker:(GMSMarker *)marker {
  NSString *message =
      [NSString stringWithFormat:@"Info window for marker %@ long pressed.", marker.title];
  [self gms_showToastWithMessage:message];
}

@end
      

স্থানীয়ভাবে সম্পূর্ণ নমুনা অ্যাপটি চালান

iOS নমুনা অ্যাপের জন্য Maps SDK GitHub থেকে ডাউনলোড সংরক্ষণাগার হিসেবে উপলব্ধ। iOS নমুনা অ্যাপের জন্য Maps SDK ইনস্টল এবং চেষ্টা করতে এই ধাপগুলি অনুসরণ করুন।

  1. স্থানীয় ডিরেক্টরিতে নমুনা সংগ্রহস্থল ক্লোন করতে git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git চালান।
  2. একটি টার্মিনাল উইন্ডো খুলুন, যে ডিরেক্টরিতে আপনি নমুনা ফাইলগুলি ক্লোন করেছেন সেখানে নেভিগেট করুন এবং GoogleMaps ডিরেক্টরিতে ড্রিল ডাউন করুন:

    সুইফট

    cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
    pod install
    open GoogleMapsSwiftDemos.xcworkspace

    উদ্দেশ্য-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps
    pod install
    open GoogleMapsDemos.xcworkspace
  3. Xcode-এ, বর্তমান স্কিমের সাথে অ্যাপটি তৈরি করতে কম্পাইল বোতাম টিপুন। বিল্ডটি একটি ত্রুটি তৈরি করে, আপনাকে সুইফটের জন্য SDKConstants.swift ফাইলে অথবা Objective-C-এর জন্য SDKDemoAPIKey.h ফাইলে আপনার API কী লিখতে অনুরোধ করে।
  4. আপনার যদি এখনও একটি API কী না থাকে, তাহলে Google ক্লাউড কনসোলে একটি প্রকল্প সেট আপ করতে নির্দেশাবলী অনুসরণ করুন এবং একটি API কী পান৷ ক্লাউড কনসোলে কী কনফিগার করার সময়, শুধুমাত্র আপনার অ্যাপ কী ব্যবহার করতে পারে তা নিশ্চিত করতে আপনি নমুনা অ্যাপের বান্ডেল শনাক্তকারীর কী সীমাবদ্ধ করতে পারেন। SDK স্যাম্পল অ্যাপের ডিফল্ট বান্ডেল আইডেন্টিফায়ার হল com.example.GoogleMapsDemos
  5. উদ্দেশ্য-C-এর জন্য Swift বা SDKDemoAPIKey.h ফাইলের জন্য SDKConstants.swift ফাইল সম্পাদনা করুন এবং apiKey বা kAPIKey ধ্রুবকের সংজ্ঞাতে আপনার API কী পেস্ট করুন। যেমন:

    সুইফট

    static let apiKey = "YOUR_API_KEY"

    উদ্দেশ্য-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. SDKConstants.swift ফাইল (Swift) বা SDKDemoAPIKey.h ফাইলে (উদ্দেশ্য-সি), নিম্নলিখিত লাইনটি সরান, কারণ এটি ব্যবহারকারী-সংজ্ঞায়িত সমস্যা নিবন্ধন করতে ব্যবহৃত হয়:

    সুইফট

    #error (Register for API Key and insert here. Then delete this line.)

    উদ্দেশ্য-C

    #error Register for API Key and insert here.
  7. নির্মাণ এবং প্রকল্প চালানো. iOS সিমুলেটর উইন্ডোটি প্রদর্শিত হবে, ম্যাপ SDK ডেমোগুলির একটি তালিকা দেখাচ্ছে৷
  8. iOS এর জন্য Maps SDK-এর একটি বৈশিষ্ট্য নিয়ে পরীক্ষা করার জন্য প্রদর্শিত বিকল্পগুলির মধ্যে একটি বেছে নিন।
  9. GoogleMapsDemos কে আপনার অবস্থান অ্যাক্সেস করার অনুমতি দেওয়ার জন্য অনুরোধ করা হলে, অনুমতি দিন নির্বাচন করুন।
,
এই উদাহরণটি অস্ট্রেলিয়ার তিনটি প্রধান শহরের মার্কার প্রদর্শন করে। যখন ব্যবহারকারী একটি মার্কার ট্যাপ করে, একটি তথ্য উইন্ডো প্রদর্শিত হয়।

শুরু করুন

আপনি নমুনা কোড চেষ্টা করার আগে, আপনি আপনার উন্নয়ন পরিবেশ কনফিগার করতে হবে. আরও তথ্যের জন্য, iOS কোড নমুনার জন্য মানচিত্র SDK দেখুন।

কোডটি দেখুন

সুইফট

import GoogleMaps
import UIKit

final class MarkerInfoWindowViewController: UIViewController {

  private let sydneyMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -33.8683, longitude: 151.2086))

  private let melbourneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -37.81969, longitude: 144.966085))

  private let brisbaneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -27.4710107, longitude: 153.0234489))

  private lazy var contentView: UIImageView = {
    return UIImageView(image: UIImage(named: "aeroplane"))
  }()

  override func loadView() {
    let cameraPosition = GMSCameraPosition(latitude: -37.81969, longitude: 144.966085, zoom: 4)
    let mapView = GMSMapView(frame: .zero, camera: cameraPosition)
    mapView.delegate = self
    view = mapView

    sydneyMarker.title = "Sydney"
    sydneyMarker.snippet = "Population: 4,605,992"
    sydneyMarker.map = mapView

    melbourneMarker.title = "Melbourne"
    melbourneMarker.snippet = "Population: 4,169,103"
    melbourneMarker.map = mapView

    brisbaneMarker.title = "Brisbane"
    brisbaneMarker.snippet = "Population: 2,189,878"
    brisbaneMarker.map = mapView
  }
}

extension MarkerInfoWindowViewController: GMSMapViewDelegate {
  func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
    if marker == sydneyMarker {
      return contentView
    }
    return nil
  }

  func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? {
    if marker == brisbaneMarker {
      return contentView
    }
    return nil
  }

  func mapView(_ mapView: GMSMapView, didCloseInfoWindowOf marker: GMSMarker) {
    showToast(message: "Info window for marker \(marker.title ?? "") closed.")
  }

  func mapView(_ mapView: GMSMapView, didLongPressInfoWindowOf marker: GMSMarker) {
    showToast(message: "Info window for marker \(marker.title ?? "") long pressed.")
  }
}

extension UIViewController {
  func showToast(message: String) {
    let toast = UIAlertController(title: nil, message: message, preferredStyle: .alert)
    present(
      toast, animated: true,
      completion: {
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(2)) {
          toast.dismiss(animated: true)
        }
      })
  }
}
      

উদ্দেশ্য-C

#import "GoogleMapsDemos/Samples/MarkerInfoWindowViewController.h"

#import "GoogleMapsDemos/UIViewController+GMSToastMessages.h"
#import <GoogleMaps/GoogleMaps.h>

@interface MarkerInfoWindowViewController () <GMSMapViewDelegate>

@end

@implementation MarkerInfoWindowViewController {
  GMSMarker *_sydneyMarker;
  GMSMarker *_melbourneMarker;
  GMSMarker *_brisbaneMarker;
  UIView *_contentView;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-37.81969
                                                          longitude:144.966085
                                                               zoom:4];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  _sydneyMarker = [[GMSMarker alloc] init];
  _sydneyMarker.title = @"Sydney";
  _sydneyMarker.snippet = @"Population: 4,605,992";
  _sydneyMarker.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
  _sydneyMarker.map = mapView;
  NSLog(@"sydneyMarker: %@", _sydneyMarker);

  _melbourneMarker.map = nil;
  _melbourneMarker = [[GMSMarker alloc] init];
  _melbourneMarker.title = @"Melbourne";
  _melbourneMarker.snippet = @"Population: 4,169,103";
  _melbourneMarker.position = CLLocationCoordinate2DMake(-37.81969, 144.966085);
  _melbourneMarker.map = mapView;
  NSLog(@"melbourneMarker: %@", _melbourneMarker);

  _brisbaneMarker.map = nil;
  _brisbaneMarker = [[GMSMarker alloc] init];
  _brisbaneMarker.title = @"Brisbane";
  _brisbaneMarker.snippet = @"Population: 2,189,878";
  _brisbaneMarker.position = CLLocationCoordinate2DMake(-27.4710107, 153.0234489);
  _brisbaneMarker.map = mapView;
  NSLog(@"brisbaneMarker: %@", _brisbaneMarker);

  _contentView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"aeroplane"]];

  mapView.delegate = self;
  self.view = mapView;
}

#pragma mark GMSMapViewDelegate

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker {
  if (marker == _sydneyMarker) {
    return _contentView;
  }
  return nil;
}

- (UIView *)mapView:(GMSMapView *)mapView markerInfoContents:(GMSMarker *)marker {
  if (marker == _brisbaneMarker) {
    return _contentView;
  }
  return nil;
}

- (void)mapView:(GMSMapView *)mapView didCloseInfoWindowOfMarker:(GMSMarker *)marker {
  NSString *message =
      [NSString stringWithFormat:@"Info window for marker %@ closed.", marker.title];
  [self gms_showToastWithMessage:message];
}

- (void)mapView:(GMSMapView *)mapView didLongPressInfoWindowOfMarker:(GMSMarker *)marker {
  NSString *message =
      [NSString stringWithFormat:@"Info window for marker %@ long pressed.", marker.title];
  [self gms_showToastWithMessage:message];
}

@end
      

স্থানীয়ভাবে সম্পূর্ণ নমুনা অ্যাপটি চালান

iOS নমুনা অ্যাপের জন্য Maps SDK GitHub থেকে ডাউনলোড সংরক্ষণাগার হিসেবে উপলব্ধ। iOS নমুনা অ্যাপের জন্য Maps SDK ইনস্টল এবং চেষ্টা করতে এই ধাপগুলি অনুসরণ করুন।

  1. স্থানীয় ডিরেক্টরিতে নমুনা সংগ্রহস্থল ক্লোন করতে git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git চালান।
  2. একটি টার্মিনাল উইন্ডো খুলুন, যে ডিরেক্টরিতে আপনি নমুনা ফাইলগুলি ক্লোন করেছেন সেখানে নেভিগেট করুন এবং GoogleMaps ডিরেক্টরিতে ড্রিল ডাউন করুন:

    সুইফট

    cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
    pod install
    open GoogleMapsSwiftDemos.xcworkspace

    উদ্দেশ্য-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps
    pod install
    open GoogleMapsDemos.xcworkspace
  3. Xcode-এ, বর্তমান স্কিমের সাথে অ্যাপটি তৈরি করতে কম্পাইল বোতাম টিপুন। বিল্ডটি একটি ত্রুটি তৈরি করে, আপনাকে সুইফটের জন্য SDKConstants.swift ফাইলে অথবা Objective-C-এর জন্য SDKDemoAPIKey.h ফাইলে আপনার API কী লিখতে অনুরোধ করে।
  4. আপনার যদি এখনও একটি API কী না থাকে, তাহলে Google ক্লাউড কনসোলে একটি প্রকল্প সেট আপ করতে নির্দেশাবলী অনুসরণ করুন এবং একটি API কী পান৷ ক্লাউড কনসোলে কী কনফিগার করার সময়, শুধুমাত্র আপনার অ্যাপ কী ব্যবহার করতে পারে তা নিশ্চিত করতে আপনি নমুনা অ্যাপের বান্ডেল শনাক্তকারীর কী সীমাবদ্ধ করতে পারেন। SDK স্যাম্পল অ্যাপের ডিফল্ট বান্ডেল আইডেন্টিফায়ার হল com.example.GoogleMapsDemos
  5. উদ্দেশ্য-C-এর জন্য Swift বা SDKDemoAPIKey.h ফাইলের জন্য SDKConstants.swift ফাইল সম্পাদনা করুন এবং apiKey বা kAPIKey ধ্রুবকের সংজ্ঞাতে আপনার API কী পেস্ট করুন। যেমন:

    সুইফট

    static let apiKey = "YOUR_API_KEY"

    উদ্দেশ্য-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. SDKConstants.swift ফাইল (Swift) বা SDKDemoAPIKey.h ফাইলে (উদ্দেশ্য-সি), নিম্নলিখিত লাইনটি সরান, কারণ এটি ব্যবহারকারী-সংজ্ঞায়িত সমস্যা নিবন্ধন করতে ব্যবহৃত হয়:

    সুইফট

    #error (Register for API Key and insert here. Then delete this line.)

    উদ্দেশ্য-C

    #error Register for API Key and insert here.
  7. নির্মাণ এবং প্রকল্প চালানো. iOS সিমুলেটর উইন্ডোটি প্রদর্শিত হবে, ম্যাপ SDK ডেমোগুলির একটি তালিকা দেখাচ্ছে৷
  8. iOS এর জন্য Maps SDK-এর একটি বৈশিষ্ট্য নিয়ে পরীক্ষা করার জন্য প্রদর্শিত বিকল্পগুলির মধ্যে একটি বেছে নিন।
  9. GoogleMapsDemos কে আপনার অবস্থান অ্যাক্সেস করার অনুমতি দেওয়ার জন্য অনুরোধ করা হলে, অনুমতি দিন নির্বাচন করুন।
,
এই উদাহরণটি অস্ট্রেলিয়ার তিনটি প্রধান শহরের মার্কার প্রদর্শন করে। যখন ব্যবহারকারী একটি মার্কার ট্যাপ করে, একটি তথ্য উইন্ডো প্রদর্শিত হয়।

শুরু করুন

আপনি নমুনা কোড চেষ্টা করার আগে, আপনি আপনার উন্নয়ন পরিবেশ কনফিগার করতে হবে. আরও তথ্যের জন্য, iOS কোড নমুনার জন্য মানচিত্র SDK দেখুন।

কোডটি দেখুন

সুইফট

import GoogleMaps
import UIKit

final class MarkerInfoWindowViewController: UIViewController {

  private let sydneyMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -33.8683, longitude: 151.2086))

  private let melbourneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -37.81969, longitude: 144.966085))

  private let brisbaneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -27.4710107, longitude: 153.0234489))

  private lazy var contentView: UIImageView = {
    return UIImageView(image: UIImage(named: "aeroplane"))
  }()

  override func loadView() {
    let cameraPosition = GMSCameraPosition(latitude: -37.81969, longitude: 144.966085, zoom: 4)
    let mapView = GMSMapView(frame: .zero, camera: cameraPosition)
    mapView.delegate = self
    view = mapView

    sydneyMarker.title = "Sydney"
    sydneyMarker.snippet = "Population: 4,605,992"
    sydneyMarker.map = mapView

    melbourneMarker.title = "Melbourne"
    melbourneMarker.snippet = "Population: 4,169,103"
    melbourneMarker.map = mapView

    brisbaneMarker.title = "Brisbane"
    brisbaneMarker.snippet = "Population: 2,189,878"
    brisbaneMarker.map = mapView
  }
}

extension MarkerInfoWindowViewController: GMSMapViewDelegate {
  func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
    if marker == sydneyMarker {
      return contentView
    }
    return nil
  }

  func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? {
    if marker == brisbaneMarker {
      return contentView
    }
    return nil
  }

  func mapView(_ mapView: GMSMapView, didCloseInfoWindowOf marker: GMSMarker) {
    showToast(message: "Info window for marker \(marker.title ?? "") closed.")
  }

  func mapView(_ mapView: GMSMapView, didLongPressInfoWindowOf marker: GMSMarker) {
    showToast(message: "Info window for marker \(marker.title ?? "") long pressed.")
  }
}

extension UIViewController {
  func showToast(message: String) {
    let toast = UIAlertController(title: nil, message: message, preferredStyle: .alert)
    present(
      toast, animated: true,
      completion: {
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(2)) {
          toast.dismiss(animated: true)
        }
      })
  }
}
      

উদ্দেশ্য-C

#import "GoogleMapsDemos/Samples/MarkerInfoWindowViewController.h"

#import "GoogleMapsDemos/UIViewController+GMSToastMessages.h"
#import <GoogleMaps/GoogleMaps.h>

@interface MarkerInfoWindowViewController () <GMSMapViewDelegate>

@end

@implementation MarkerInfoWindowViewController {
  GMSMarker *_sydneyMarker;
  GMSMarker *_melbourneMarker;
  GMSMarker *_brisbaneMarker;
  UIView *_contentView;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-37.81969
                                                          longitude:144.966085
                                                               zoom:4];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  _sydneyMarker = [[GMSMarker alloc] init];
  _sydneyMarker.title = @"Sydney";
  _sydneyMarker.snippet = @"Population: 4,605,992";
  _sydneyMarker.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
  _sydneyMarker.map = mapView;
  NSLog(@"sydneyMarker: %@", _sydneyMarker);

  _melbourneMarker.map = nil;
  _melbourneMarker = [[GMSMarker alloc] init];
  _melbourneMarker.title = @"Melbourne";
  _melbourneMarker.snippet = @"Population: 4,169,103";
  _melbourneMarker.position = CLLocationCoordinate2DMake(-37.81969, 144.966085);
  _melbourneMarker.map = mapView;
  NSLog(@"melbourneMarker: %@", _melbourneMarker);

  _brisbaneMarker.map = nil;
  _brisbaneMarker = [[GMSMarker alloc] init];
  _brisbaneMarker.title = @"Brisbane";
  _brisbaneMarker.snippet = @"Population: 2,189,878";
  _brisbaneMarker.position = CLLocationCoordinate2DMake(-27.4710107, 153.0234489);
  _brisbaneMarker.map = mapView;
  NSLog(@"brisbaneMarker: %@", _brisbaneMarker);

  _contentView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"aeroplane"]];

  mapView.delegate = self;
  self.view = mapView;
}

#pragma mark GMSMapViewDelegate

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker {
  if (marker == _sydneyMarker) {
    return _contentView;
  }
  return nil;
}

- (UIView *)mapView:(GMSMapView *)mapView markerInfoContents:(GMSMarker *)marker {
  if (marker == _brisbaneMarker) {
    return _contentView;
  }
  return nil;
}

- (void)mapView:(GMSMapView *)mapView didCloseInfoWindowOfMarker:(GMSMarker *)marker {
  NSString *message =
      [NSString stringWithFormat:@"Info window for marker %@ closed.", marker.title];
  [self gms_showToastWithMessage:message];
}

- (void)mapView:(GMSMapView *)mapView didLongPressInfoWindowOfMarker:(GMSMarker *)marker {
  NSString *message =
      [NSString stringWithFormat:@"Info window for marker %@ long pressed.", marker.title];
  [self gms_showToastWithMessage:message];
}

@end
      

স্থানীয়ভাবে সম্পূর্ণ নমুনা অ্যাপটি চালান

iOS নমুনা অ্যাপের জন্য Maps SDK GitHub থেকে ডাউনলোড সংরক্ষণাগার হিসেবে উপলব্ধ। iOS নমুনা অ্যাপের জন্য Maps SDK ইনস্টল এবং চেষ্টা করতে এই ধাপগুলি অনুসরণ করুন।

  1. স্থানীয় ডিরেক্টরিতে নমুনা সংগ্রহস্থল ক্লোন করতে git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git চালান।
  2. একটি টার্মিনাল উইন্ডো খুলুন, যে ডিরেক্টরিতে আপনি নমুনা ফাইলগুলি ক্লোন করেছেন সেখানে নেভিগেট করুন এবং GoogleMaps ডিরেক্টরিতে ড্রিল ডাউন করুন:

    সুইফট

    cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
    pod install
    open GoogleMapsSwiftDemos.xcworkspace

    উদ্দেশ্য-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps
    pod install
    open GoogleMapsDemos.xcworkspace
  3. Xcode-এ, বর্তমান স্কিমের সাথে অ্যাপটি তৈরি করতে কম্পাইল বোতাম টিপুন। বিল্ডটি একটি ত্রুটি তৈরি করে, আপনাকে সুইফটের জন্য SDKConstants.swift ফাইলে অথবা Objective-C-এর জন্য SDKDemoAPIKey.h ফাইলে আপনার API কী লিখতে অনুরোধ করে।
  4. আপনার যদি এখনও একটি API কী না থাকে, তাহলে Google ক্লাউড কনসোলে একটি প্রকল্প সেট আপ করতে নির্দেশাবলী অনুসরণ করুন এবং একটি API কী পান৷ ক্লাউড কনসোলে কী কনফিগার করার সময়, শুধুমাত্র আপনার অ্যাপ কী ব্যবহার করতে পারে তা নিশ্চিত করতে আপনি নমুনা অ্যাপের বান্ডেল শনাক্তকারীর কী সীমাবদ্ধ করতে পারেন। SDK স্যাম্পল অ্যাপের ডিফল্ট বান্ডেল আইডেন্টিফায়ার হল com.example.GoogleMapsDemos
  5. উদ্দেশ্য-C-এর জন্য Swift বা SDKDemoAPIKey.h ফাইলের জন্য SDKConstants.swift ফাইল সম্পাদনা করুন এবং apiKey বা kAPIKey ধ্রুবকের সংজ্ঞাতে আপনার API কী পেস্ট করুন। যেমন:

    সুইফট

    static let apiKey = "YOUR_API_KEY"

    উদ্দেশ্য-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. SDKConstants.swift ফাইল (Swift) বা SDKDemoAPIKey.h ফাইলে (উদ্দেশ্য-সি), নিম্নলিখিত লাইনটি সরান, কারণ এটি ব্যবহারকারী-সংজ্ঞায়িত সমস্যা নিবন্ধন করতে ব্যবহৃত হয়:

    সুইফট

    #error (Register for API Key and insert here. Then delete this line.)

    উদ্দেশ্য-C

    #error Register for API Key and insert here.
  7. নির্মাণ এবং প্রকল্প চালানো. iOS সিমুলেটর উইন্ডোটি প্রদর্শিত হবে, ম্যাপ SDK ডেমোগুলির একটি তালিকা দেখাচ্ছে৷
  8. iOS এর জন্য Maps SDK-এর একটি বৈশিষ্ট্য নিয়ে পরীক্ষা করার জন্য প্রদর্শিত বিকল্পগুলির মধ্যে একটি বেছে নিন।
  9. GoogleMapsDemos কে আপনার অবস্থান অ্যাক্সেস করার অনুমতি দেওয়ার জন্য অনুরোধ করা হলে, অনুমতি দিন নির্বাচন করুন।