שכבות-על של קרקע

בחירת פלטפורמה: Android iOS JavaScript

שכבות-על של פני השטח הן שכבות-על במפה שמקושרות לקווי הרוחב/האורך, כך שהן זזות כשגוררים את המפה או משנים את מרחק התצוגה שלה.

מבוא

שכבת-על של קרקע היא תמונה שמקובעת במפה. בניגוד לסמנים, שכבות-על של פני השטח מותאמות לפני כדור הארץ ולא למסך, כך ששינוי הכיוון של המפה, הטיה שלה או שינוי הזום ישנו את הכיוון של התמונה.

כדי להוסיף שכבת-על של שטח, יוצרים אובייקט GMSGroundOverlay שמגדיר גם סמל וגם גבולות. אם לא מציינים אף אחד מהם, שכבת-העל של הקרקע לא תופיע במפה. אפשר גם לציין הגדרות נוספות שישפיעו על מיקום התמונה במפה. אחרי שמגדירים את האפשרויות הנדרשות, מגדירים את המאפיין map של האובייקט הזה כדי להוסיף את שכבת-העל.

הוספת שכבת-על

  1. יצירת אובייקט GMSGroundOverlay חדש
  2. מגדירים את הנכס icon למכונה של UIImage.
  3. מגדירים את הנכס bounds למכונה של GMSCoordinateBounds. הגבולות מייצגים את הפינות הדרום-מערבית והצפון-מזרחית של התמונה.
  4. מגדירים מאפיינים אופציונליים, כמו bearing ו-zoomLevel, לפי הצורך.
  5. מגדירים את המאפיין 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.