أحداث وإيماءات العلامات
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
عند ضبط خصائص محدّدة للعلامات المتقدّمة، يمكنك تتبُّع أحداث العلامات، مثل النقرات والإيماءات.
إذا تم النقر على محدّد موقع، يمكن الاطّلاع على معلومات إضافية، مثل عنوان محدّد الموقع أو مقتطف. يمكن أيضًا نقل العلامات القابلة للسحب باستخدام إيماءة الضغط مع الاستمرار.
الردّ على أحداث العلامات
يمكنك الاستجابة لأحداث العلامات من خلال إضافة البروتوكول GMSMapViewDelegate
إلى طريقة العرض وتنفيذ دالة الرجوع المناسبة. يحدّد هذا المثال title
وsnippet
لعلامة محدّدة.
Swift
// MARK: GMSMapViewDelegate
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
if let title = marker.title {
if let snippet = marker.snippet {
print("marker title: \(title): snippet: \(snippet)")
}
}
return true
}
Objective-C
// MARK: GMSMapViewDelegate
- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {
if (marker.title && marker.snippet) {
NSLog(@"marker with title:%@ snippet: %@", marker.title, marker.snippet)
}
return YES;
}
التحكّم في إمكانية ظهور العلامات حسب مستوى تكبير الخريطة
للتحكّم في إذن الوصول إلى GMSMarker
، عليك تنفيذ بروتوكول GMSMapViewDelegate
وإضافة شرط لضبط GMSMarker.map
.
Swift
// MARK: GMSMapViewDelegate
func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) {
marker.map = position.zoom >= 14 ? mapView : nil
}
Objective-C
// MARK: GMSMapViewDelegate
- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position {
marker.map = position.zoom >= 14 ? mapView : nil;
}
إتاحة سحب علامة
عند تفعيل الموقع draggable
، يمكن للمستخدمين سحب العلامات على الخريطة من خلال الضغط مع الاستمرار. لإتاحة سحب العلامة، اضبط السمة GMSMarker.draggable
على true.
Swift
marker.draggable = true
Objective-C
marker.draggable = YES;
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eGoogle Maps SDK for iOS allows you to monitor marker events like taps and gestures, displaying information like title and snippet when tapped.\u003c/p\u003e\n"],["\u003cp\u003eYou can enable marker dragging using a long press gesture by setting the \u003ccode\u003eGMSMarker.draggable\u003c/code\u003e property.\u003c/p\u003e\n"],["\u003cp\u003eMarker visibility can be controlled based on the map's zoom level using the \u003ccode\u003eGMSMapViewDelegate\u003c/code\u003e and setting the \u003ccode\u003eGMSMarker.map\u003c/code\u003e property conditionally.\u003c/p\u003e\n"],["\u003cp\u003eTo respond to marker events and access details like title and snippet, implement the \u003ccode\u003eGMSMapViewDelegate\u003c/code\u003e protocol and its corresponding callback methods.\u003c/p\u003e\n"]]],["Markers' events, like taps and gestures, can be monitored by adding `GMSMapViewDelegate`. Tapped markers reveal their title and snippet, set using `GMSMarker.title`. Markers can be made draggable with `GMSMarker.draggable`, allowing movement via long press. You can control marker visibility based on zoom level by setting `GMSMarker.map` within the `GMSMapViewDelegate` callback. Implementing the delegate protocol also allows for handling custom responses to specific marker interactions.\n"],null,["When specific advanced marker properties are set, you can monitor marker events\nsuch as taps and [gestures](/maps/documentation/ios-sdk/controls#map_gestures).\nIf a marker is tapped, one can see additional information such as a marker title\nor snippet. One can also move draggable markers using a long press gesture.\n\n- To track marker events, add the [`GMSMapViewDelegate`](/maps/documentation/ios-sdk/reference/objc/Protocols/GMSMapViewDelegate) to your `view`.\n- To make a marker draggable, set the [`GMSMarker.draggable`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSMarker#draggable) property.\n- To set descriptive text for a marker, use the [`GMSMarker.title`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSOverlay#title) property.\n\nRespond to marker events\n\nYou can respond to [marker events](/maps/documentation/ios-sdk/events) by adding\nthe [`GMSMapViewDelegate`](/maps/documentation/ios-sdk/reference/objc/Protocols/GMSMapViewDelegate) protocol to your view and\nimplementing the corresponding callback. This example identifies the `title` and\n`snippet` for a selected marker. \n\nSwift \n\n```swift\n// MARK: GMSMapViewDelegate\n\nfunc mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -\u003e Bool {\n if let title = marker.title {\n if let snippet = marker.snippet {\n print(\"marker title: \\(title): snippet: \\(snippet)\")\n }\n }\n return true\n}\n```\n\nObjective-C \n\n```objective-c\n// MARK: GMSMapViewDelegate\n\n- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {\n if (marker.title && marker.snippet) {\n NSLog(@\"marker with title:%@ snippet: %@\", marker.title, marker.snippet)\n }\n return YES;\n}\n```\n\nControl marker visibility by map zoom level\n\nTo control the visibility of [`GMSMarker`](/maps/documentation/ios-sdk/reference/objc/Classes/GMSMarker), implement the\n[`GMSMapViewDelegate`](/maps/documentation/ios-sdk/reference/objc/Protocols/GMSMapViewDelegate) protocol and add a condition to set\n`GMSMarker.map`. \n\nSwift \n\n```swift\n// MARK: GMSMapViewDelegate\n\nfunc mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) {\n marker.map = position.zoom \u003e= 14 ? mapView : nil\n}\n```\n\nObjective-C \n\n```objective-c\n// MARK: GMSMapViewDelegate\n\n- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position {\n marker.map = position.zoom \u003e= 14 ? mapView : nil;\n}\n```\n\nMake a marker draggable\n\nWhen you enable the `draggable` property users can drag markers on the map with\na long press gesture. To make a marker draggable, set the `GMSMarker.draggable`\nproperty to true. \n\nSwift \n\n```swift\nmarker.draggable = true\n```\n\nObjective-C \n\n```objective-c\nmarker.draggable = YES;\n```"]]