שכבות-על של הקרקע הן שכבות-על במפה שקשורות לקואורדינטות של קו רוחב/קו אורך, ולכן הן זזות כשגוררים את המפה או משנים את רמת הזום שלה.
מבוא
שכבת-על של קרקע היא תמונה שמוצמדת למפה. שלא כמו סמנים, שכבות-על של הקרקע מכוונות ביחס לפני השטח של כדור הארץ ולא ביחס למסך, ולכן סיבוב, הטיה או שינוי גודל של המפה ישנו את הכיוון של התמונה.
כדי להוסיף שכבת-על של קרקע, יוצרים אובייקט 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
. אפשר גם להסיר את כל שכבות העל (כולל שכבות על של הקרקע שמוצגות כרגע במפה) באמצעות הקריאה לשיטה 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
.