בנוסף לשינוי הסגנון של התכונות במפה, אפשר גם להסתיר אותן לגמרי. בדוגמה הזו מוסבר איך להסתיר במפה נקודות עניין עסקיות (POI) ואת הסמלים של התחבורה הציבורית.
אפשר לעצב רק את סוג המפה kGMSTypeNormal
.
החלת סגנונות על המפה
כדי להחיל סגנונות מפה מותאמים אישית על מפה, צריך להפעיל את GMSMapStyle(...)
כדי ליצור מכונה של GMSMapStyle
, ולהעביר כתובת URL של קובץ JSON מקומי או מחרוזת JSON שמכילה הגדרות של סגנונות. מקצים את המכונה GMSMapStyle
לנכס mapStyle
של המפה.
באמצעות קובץ JSON
בדוגמאות הבאות מוצגת קריאה לפונקציה GMSMapStyle(...)
והעברת כתובת URL של קובץ מקומי:
בדוגמת הקוד הבאה, הפרויקט מכיל קובץ בשם style.json
:
Swift
import GoogleMaps class MapStyling: UIViewController { // Set the status bar style to complement night-mode. override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } override func loadView() { let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 14.0) let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) do { // Set the map style by passing the URL of the local file. if let styleURL = Bundle.main.url(forResource: "style", withExtension: "json") { mapView.mapStyle = try GMSMapStyle(contentsOfFileURL: styleURL) } else { NSLog("Unable to find style.json") } } catch { NSLog("One or more of the map styles failed to load. \(error)") } self.view = mapView } }
Objective-C
#import "MapStyling.h" @import GoogleMaps; @interface MapStyling () @end @implementation MapStyling // Set the status bar style to complement night-mode. - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } - (void)loadView { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.myLocationEnabled = YES; NSBundle *mainBundle = [NSBundle mainBundle]; NSURL *styleUrl = [mainBundle URLForResource:@"style" withExtension:@"json"]; NSError *error; // Set the map style by passing the URL for style.json. GMSMapStyle *style = [GMSMapStyle styleWithContentsOfFileURL:styleUrl error:&error]; if (!style) { NSLog(@"The style definition could not be loaded: %@", error); } mapView.mapStyle = style; self.view = mapView; } @end
כדי להגדיר את אפשרויות הסגנון, מוסיפים קובץ חדש לפרויקט בשם style.json
, ומדביקים את הצהרת הסגנון הבאה בפורמט JSON כדי להסתיר נקודות עניין עסקיות (POI) וסמלי תחבורה ציבורית:
שימוש במשאב מחרוזת
בדוגמאות הבאות מוצגת קריאה ל-GMSMapStyle()
והעברת משאב מחרוזת:
Swift
class MapStylingStringResource: UIViewController { let MapStyle = "JSON_STYLE_GOES_HERE" // Set the status bar style to complement night-mode. override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } override func loadView() { let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 14.0) let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) do { // Set the map style by passing a valid JSON string. mapView.mapStyle = try GMSMapStyle(jsonString: MapStyle) } catch { NSLog("One or more of the map styles failed to load. \(error)") } self.view = mapView } }
Objective-C
@implementation MapStylingStringResource // Paste the JSON string to use. static NSString *const kMapStyle = @"JSON_STYLE_GOES_HERE"; // Set the status bar style to complement night-mode. - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } - (void)loadView { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.myLocationEnabled = YES; NSError *error; // Set the map style by passing a valid JSON string. GMSMapStyle *style = [GMSMapStyle styleWithJSONString:kMapStyle error:&error]; if (!style) { NSLog(@"The style definition could not be loaded: %@", error); } mapView.mapStyle = style; self.view = mapView; } @end
הצהרת הסגנון הבאה מסתירה נקודות עניין עסקיות (POI) וסמלי תחבורה ציבורית. מדביקים את מחרוזת הסגנון הבאה כערך של המשתנה kMapStyle
:
הצהרות בסגנון JSON
במפות עם עיצוב נעשה שימוש בשני מושגים כדי להחיל צבעים ושינויים אחרים בסגנון על המפה:
- בוררים מציינים את הרכיבים הגיאוגרפיים שאפשר לשנות את הסגנון שלהם במפה. אלה כוללים כבישים, פארקים, גופי מים ועוד, וגם את התוויות שלהם. הבוררים כוללים תכונות ורכיבים, שמצוינים כמאפייני
featureType
ו-elementType
. - עיצובים הם מאפייני צבע וחשיפה שאפשר להחיל על רכיבי המפה. הם מגדירים את הצבע המוצג באמצעות שילוב של ערכי גוון, צבע ובהירות/גמא.
תיאור מפורט של אפשרויות העיצוב של JSON זמין בחומר העזרה בנושא עיצוב.
אשף העיצוב של Maps Platform
אפשר להשתמש באשף הסטיילינג של פלטפורמת מפות Google כדרך מהירה ליצירת אובייקט סטיילינג מסוג JSON. ב-SDK של מפות ל-iOS יש תמיכה באותן הצהרות סגנון כמו ב-JavaScript API של מפות.
דוגמאות קוד מלאות
המאגר ApiDemos ב-GitHub כולל דוגמאות שממחישות את השימוש בסגנון.