עיצוב מפות חדש יתווסף בקרוב לפלטפורמה של מפות Google. העדכון הזה בסגנון המפה כולל לוח צבעים חדש שמוגדר כברירת מחדל ושיפורים בחוויית השימוש במפות ובנוחות השימוש. כל סגנונות המפה יעודכנו באופן אוטומטי במרץ 2025. אפשר לקרוא מידע נוסף על זמינות ועל האפשרות להצטרף בשלב מוקדם יותר במאמר בנושא סגנון מפה חדש לפלטפורמה של מפות Google.
בדף הזה מוסבר איך לעצב את המפה, תוך שימוש במצב לילה כדוגמה.
סקירה כללית
אפשרויות הסגנון מאפשרות לכם להתאים אישית את הצגת הסגנונות הרגילים של מפות Google, ולשנות את התצוגה החזותית של תכונות כמו כבישים, פארקים, עסקים ומוקדי עניין אחרים. כך תוכלו להדגיש רכיבים מסוימים במפה או לשלב את המפה עם הסגנון של האפליקציה.
אפשר לעצב רק את סוג המפה kGMSTypeNormal.
החלת סגנונות על המפה
כדי להחיל סגנונות מפה מותאמים אישית על מפה, צריך להפעיל את GMSMapStyle(...) כדי ליצור מכונה של GMSMapStyle, ולהעביר כתובת URL של קובץ JSON מקומי או מחרוזת JSON שמכילה הגדרות של סגנונות. מקצים את המכונה GMSMapStyle לנכס mapStyle של המפה.
באמצעות קובץ JSON
בדוגמאות הבאות מוצגת קריאה לפונקציה GMSMapStyle(...) והעברת כתובת URL של קובץ מקומי:
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 עבור עיצוב במצב לילה:
בדוגמאות הבאות מוצגת קריאה ל-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
כדי להגדיר את אפשרויות הסגנון, מדביקים את מחרוזת הסגנון הבאה כערך של המשתנה kMapStyle:
במפות עם עיצוב נעשה שימוש בשני מושגים כדי להחיל צבעים ושינויים אחרים בסגנון על המפה:
בוררים מציינים את הרכיבים הגיאוגרפיים שאפשר לשנות את הסגנון שלהם במפה. אלה כוללים כבישים, פארקים, גופי מים ועוד, וגם את התוויות שלהם. הבוררים כוללים תכונות ורכיבים, שמצוינים כמאפייני featureType ו-elementType.
סגנונות הם מאפייני צבע וחשיפה שאפשר להחיל על רכיבי המפה. הם מגדירים את הצבע המוצג באמצעות שילוב של ערכי גוון, צבע ובהירות/גמא.
אפשר להשתמש באשף העיצוב של פלטפורמת מפות Google כדרך מהירה ליצור אובייקט עיצוב בפורמט JSON. ב-SDK של מפות ל-iOS יש תמיכה באותן הצהרות סגנון כמו ב-JavaScript API של מפות.
דוגמאות קוד מלאות
המאגר ApiDemos ב-GitHub כולל דוגמאות שממחישות את השימוש בסגנון.
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2024-11-20 (שעון UTC)."],[[["This guide provides instructions for styling Google Maps using JSON to customize the appearance of map elements."],["You can style your map using a local JSON file or a JSON string, applying it to the `mapStyle` property of the map."],["JSON style declarations consist of selectors (`featureType`, `elementType`) to target map components and stylers to define their visual properties."],["Leverage the Maps Platform Styling Wizard to easily create custom JSON styles and apply them to your maps."],["Styling is applicable only to the `kGMSTypeNormal` map type and offers flexibility in highlighting or blending map features with your application's design."]]],[]]