שכבות-על של שטח הן שכבות-על במפה שמקושרות לקווי הרוחב/אורך, כך שהן זזות כשגוררים את המפה או משנים את מרחק התצוגה שלה.
מבוא
שכבת-על של קרקע היא תמונה שמקובעת במפה. בניגוד לסמנים, שכבות-על של פני השטח מותאמות לפני כדור הארץ ולא למסך, כך ששינוי הכיוון של המפה, הטיה שלה או שינוי הזום ישנו את כיוון התמונה.
כדי להוסיף שכבת-על של שטח, יוצרים אובייקט GMSGroundOverlay
שמגדיר גם סמל וגם גבולות. אם לא מציינים אף אחד מהם, שכבת-העל של הקרקע לא תופיע במפה. אפשר גם לציין הגדרות נוספות שישפיעו על מיקום התמונה במפה.
אחרי שמגדירים את האפשרויות הנדרשות, מגדירים את המאפיין map
של האובייקט הזה כדי להוסיף את שכבת-העל.
הוספת שכבת-על
- יצירת אובייקט
GMSGroundOverlay
חדש - מגדירים את המאפיין
icon
למכונה שלUIImage
. - מגדירים את המאפיין
bounds
למכונה שלGMSCoordinateBounds
. הגבולות מייצגים את הפינות הדרום-מערבית והצפון-מזרחית של התמונה. - מגדירים מאפיינים אופציונליים, כמו
bearing
ו-zoomLevel
, לפי הצורך. - מגדירים את המאפיין
map
– התמונה מופיעה במפה.
הדוגמה הבאה מראה איך מוסיפים שכבת-על של שטח לאובייקט GMSMapView
קיים.
Swift
let southWest = CLLocationCoordinate2D(latitude: 40.712216, longitude: -74.22655) let northEast = CLLocationCoordinate2D(latitude: 40.773941, longitude: -74.12544) let overlayBounds = GMSCoordinateBounds(coordinate: southWest, coordinate: northEast) // Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg let icon = UIImage(named: "newark_nj_1922") let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon) overlay.bearing = 0 overlay.map = mapView
Objective-C
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(40.712216,-74.22655); CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(40.773941,-74.12544); GMSCoordinateBounds *overlayBounds = [[GMSCoordinateBounds alloc] initWithCoordinate:southWest coordinate:northEast]; // Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg UIImage *icon = [UIImage imageNamed:@"newark_nj_1922"]; GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon]; overlay.bearing = 0; overlay.map = mapView;
הסרת שכבת-על
כדי להסיר שכבת-על של שטח מפה, מגדירים את המאפיין map
של GMSGroundOverlay
ל-nil
. לחלופין, אפשר להסיר את כל שכבות-העל (כולל שכבות-על של שטח שמופיעות כרגע במפה) על-ידי קריאה ל-method GMSMapView
clear
.
Swift
mapView.clear()
Objective-C
[mapView clear];
אם רוצים לבצע שינויים בשכבת-על של שטח לאחר שמוסיפים אותה למפה, צריך לוודא שעדיין מחזיקים את האובייקט GMSGroundOverlay
. תוכלו לשנות את שכבת-העל של הקרקע מאוחר יותר על ידי ביצוע שינויים באובייקט הזה.
Swift
let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon) overlay.bearing = 0 overlay.map = mapView // ... overlay.isTappable = true
Objective-C
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon]; overlay.bearing = 0; overlay.map = mapView; // ... overlay.tappable = YES;
אירועים
אפשר להאזין לאירועים שמתרחשים במפה, למשל כשמשתמש מקייש על שכבת-על. כדי להאזין לאירועים, צריך להטמיע את הפרוטוקול GMSMapViewDelegate
. אפשר לעיין במדריך לאירועים וברשימת השיטות בדף GMSMapViewDelegate
.