عند الضغط مع الاستمرار على الخريطة، يتم إرسال إحداثيات الإيماءة إلى خدمة الترميز الجغرافي العكسي. في حال نجاح العملية، ستتم إضافة علامة تتضمّن نافذة معلومات تحتوي على النتيجة إلى الخريطة.
البدء
قبل أن تتمكّن من تجربة نموذج الرمز البرمجي، عليك ضبط بيئة التطوير. لمزيد من المعلومات، يُرجى الاطّلاع على عيّنات التعليمات البرمجية لحزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لأجهزة iOS.
عرض الرمز
Swift
import GoogleMaps import UIKit // Sample code for GeoCoder service. class GeocoderViewController: UIViewController { private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 12) return GMSMapView(frame: .zero, camera: camera) }() private lazy var geocoder = GMSGeocoder() override func loadView() { view = mapView mapView.delegate = self } } extension GeocoderViewController: GMSMapViewDelegate { func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) { // On a long press, reverse geocode this location. geocoder.reverseGeocodeCoordinate(coordinate) { response, error in guard let address = response?.firstResult() else { let errorMessage = error.map { String(describing: $0) } ?? "<no error>" print( "Could not reverse geocode point (\(coordinate.latitude), \(coordinate.longitude)): \(errorMessage)" ) return } print("Geocoder result: \(address)") let marker = GMSMarker(position: address.coordinate) marker.appearAnimation = .pop marker.map = mapView guard let lines = address.lines, let title = lines.first else { return } marker.title = title if lines.count > 1 { marker.snippet = lines[1] } } } }
Objective-C
#import "GoogleMapsDemos/Samples/GeocoderViewController.h" #import <GoogleMaps/GoogleMaps.h> @implementation GeocoderViewController { GMSMapView *_mapView; GMSGeocoder *_geocoder; } - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.868 longitude:151.2086 zoom:12]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; _mapView.delegate = self; _geocoder = [[GMSGeocoder alloc] init]; self.view = _mapView; } - (void)mapView:(GMSMapView *)mapView didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate { // On a long press, reverse geocode this location. __weak __typeof__(self) weakSelf = self; GMSReverseGeocodeCallback handler = ^(GMSReverseGeocodeResponse *response, NSError *error) { [weakSelf handleResponse:response coordinate:coordinate error:error]; }; [_geocoder reverseGeocodeCoordinate:coordinate completionHandler:handler]; } - (void)handleResponse:(nullable GMSReverseGeocodeResponse *)response coordinate:(CLLocationCoordinate2D)coordinate error:(nullable NSError *)error { GMSAddress *address = response.firstResult; if (address) { NSLog(@"Geocoder result: %@", address); GMSMarker *marker = [GMSMarker markerWithPosition:address.coordinate]; NSArray<NSString *> *lines = [address lines]; marker.title = [lines firstObject]; if (lines.count > 1) { marker.snippet = [lines objectAtIndex:1]; } marker.appearAnimation = kGMSMarkerAnimationPop; marker.map = _mapView; } else { NSLog(@"Could not reverse geocode point (%f,%f): %@", coordinate.latitude, coordinate.longitude, error); } } @end
تشغيل نموذج التطبيق الكامل على الجهاز
يتوفّر تطبيق Maps SDK for iOS التجريبي كـ أرشيف قابل للتنزيل من GitHub. اتّبِع الخطوات التالية لتثبيت تطبيق Maps SDK for iOS التجريبي وتجربته.
- نفِّذ الأمر
git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git
لنسخ مستودع النماذج إلى دليل محلي. افتح نافذة أوامر طرفية، وانتقِل إلى الدليل الذي استنسخت فيه الملفات النموذجية، ثم انتقِل إلى دليل GoogleMaps:
Swift
cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
pod install
open GoogleMapsSwiftDemos.xcworkspace
Objective-C
cd maps-sdk-for-ios-samples-main/GoogleMaps
pod install
open GoogleMapsDemos.xcworkspace
- في Xcode، اضغط على زر التجميع من أجل
إنشاء التطبيق
باستخدام المخطط الحالي. يحدث خطأ في الإصدار، ما يطلب منك إدخال مفتاح واجهة برمجة التطبيقات في ملف
SDKConstants.swift
للغة Swift أو ملفSDKDemoAPIKey.h
للغة Objective-C. - احصل على مفتاح واجهة برمجة تطبيقات من مشروعك الذي تم تفعيل حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لتطبيقات iOS فيه.
- عدِّل ملف
SDKConstants.swift
للغة Swift أو ملفSDKDemoAPIKey.h
للغة Objective-C، ثم الصِق مفتاح واجهة برمجة التطبيقات في تعريف الثابتapiKey
أوkAPIKey
. على سبيل المثال:Swift
static let apiKey = "YOUR_API_KEY"
Objective-C
static NSString *const kAPIKey = @"YOUR_API_KEY";
- في ملف
SDKConstants.swift
(Swift) أو ملفSDKDemoAPIKey.h
(Objective-C)، أزِل السطر التالي لأنّه يُستخدَم لتسجيل المشكلة التي يحدّدها المستخدم:Swift
#error (Register for API Key and insert here. Then delete this line.)
Objective-C
#error Register for API Key and insert here.
- إنشاء المشروع وتشغيله تظهر نافذة محاكي iOS، وتعرض قائمة عروض توضيحية لحزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google".
- اختَر أحد الخيارات المعروضة لتجربة إحدى ميزات "حزمة تطوير البرامج بالاستناد إلى بيانات خرائط Google" لأجهزة iOS.
- إذا طُلب منك السماح لتطبيق GoogleMapsDemos بالوصول إلى موقعك الجغرافي، اختَر السماح.