- מבוא
- הוספת GeoJsonLayer למפה
- הסירו את GeoJsonLayer
- הוספה והסרה של GeoJsonFeature
- גישה ל-GeoJsonFeatures והמאפיינים שלהם
- מעצבים את GeoJsonLayer GeoJsonFeatures
- לצפייה באפליקציית ההדגמה
מבוא
GeoJSON הוא הרחבה של נתוני ה-JSON
ומייצג נתונים גיאוגרפיים. באמצעות הכלי הזה אפשר לאחסן
מאפיינים גיאוגרפיים בפורמט GeoJSON ולהציג אותם כשכבה מעל
את המפה. כדי להוסיף ולהסיר את נתוני GeoJSON למפה או ממנה, קוראים לפונקציה
addLayerToMap()
ו-removeLayerFromMap()
בהתאמה. באופן דומה
ניתן להוסיף ולהסיר תכונות ספציפיות באמצעות התקשרות
addFeature()
וגם removeFeature()
, לאחר העברה ב-
אובייקט GeoJsonFeature
. אם רוצים לגשת לתכונות,
יכול לקרוא ל-getFeatures()
כדי לקבל איטרציה לכל האובייקטים של
GeoJsonFeature
שנוספו לשכבה.
אפשר גם להגדיר סגנונות ברירת מחדל שיוחלו על תכונות לפני שהם
נוסף לשכבה באמצעות קריאה ל-getDefaultPointStyle()
,
getDefaultLineStringStyle()
או
getDefaultPolygonStyle()
ולהגדיר את אפשרויות הסגנון בכל אחת מהן.
לחלופין, אפשר להגדיר את הסגנון של משתמש מסוים
GeoJsonFeature
בהתקשרות אל setPointStyle()
,
setLineStringStyle()
או setPolygonStyle()
ב-
ומעבירים את אובייקט הסגנון הרלוונטי.
הוספת GeoJsonLayer למפה
כדי להוסיף שכבת GeoJson למפה, קודם צריך ליצור מופע של GeoJsonLayer בכיתה. יש שתי דרכים ליצור את GeoJsonLayer.
כדי לייבא מ-JSONObject
, אתם צריכים:
- אובייקט
GoogleMap
שבו השכבה מיועדת לעיבוד JSONObject
שמכיל את נתוני GeoJSON שיש להוסיף אל שכבה
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
כדי לייבא מקובץ GeoJSON מקומי, צריך:
- אובייקט
GoogleMap
שבו השכבה מיועדת לעיבוד - קובץ של משאב מקומי שמכיל את נתוני GeoJSON
- אובייקט
Context
, שנדרש לפתיחת משאב מקומי קובץ
Kotlin
val layer = GeoJsonLayer(map, R.raw.geojson_file, context)
Java
GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.geojson_file, context);
אחרי שיוצרים את GeoJsonLayer
, צריך להתקשר
addLayerToMap()
כדי להוסיף את הנתונים המיובאים למפה:
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
הסרת GeoJsonLayer
נניח שהוספתם את השכבה הזו
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
כדי לנקות את GeoJsonLayer, יש להתקשר אל removeLayerFromMap()
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
הוספה והסרה של GeoJsonFeature
תכונה ב-GeoJSON כוללת את התכונה "feature". היא מכילה גיאומטריה, מאפיין, ואופציונלי, מכיל תיבה תוחמת או מזהה.
אפשר ליצור GeoJsonFeature
אובייקטים בנפרד, ולהוסיף אותם
אל GeoJsonLayer
.
נניח שיצרתם תכונה שמכילה נקודה ב-0, 0 עם ערך אחד במאפיינים שלו וללא תיבה תוחמת.
Kotlin
val point = GeoJsonPoint(LatLng(0.0, 0.0)) val properties = hashMapOf("Ocean" to "South Atlantic") val pointFeature = GeoJsonFeature(point, "Origin", properties, null)
Java
GeoJsonPoint point = new GeoJsonPoint(new LatLng(0, 0)); HashMap<String, String> properties = new HashMap<>(); properties.put("Ocean", "South Atlantic"); GeoJsonFeature pointFeature = new GeoJsonFeature(point, "Origin", properties, null);
כדי להוסיף את התכונה לשכבה, קוראים לפונקציה addFeature()
ומעבירים
את התכונה כדי להוסיף.
Kotlin
layer.addFeature(pointFeature)
Java
layer.addFeature(pointFeature);
כדי להסיר תכונה אחרי שמוסיפים אותו לשכבה, מפעילים את הפקודה
removeFeature()
ומעבירים את התכונה כדי להסיר.
Kotlin
layer.removeFeature(pointFeature)
Java
layer.removeFeature(pointFeature);
גישה אל GeoJsonFeatures והמאפיינים שלהם
כדי לקבל גישה לכל התכונות GeoJsonFeatures שנוספו לשכבה, ניתן
התקשר אל getFeatures()
בGeoJsonLayer
שאתה
נוצרו. הפעולה הזו תחזיר ערך חוזר של GeoJsonFeatures
שאליה אפשר לגשת באמצעות לולאת 'עבור כל אחד' כפי שמוצג בהמשך.
Kotlin
for (feature in layer.features) { // Do something to the feature }
Java
for (GeoJsonFeature feature : layer.getFeatures()) { // Do something to the feature }
שימוש ב-methods hasProperty()
ו-getProperty()
ב-
בשילוב עם השיטה getFeatures()
כדי לבדוק אם כל אחד
יש מאפיין מסוים ולגשת אליו, אם הוא קיים.
Kotlin
if (feature.hasProperty("Ocean")) { val oceanProperty = feature.getProperty("Ocean") }
Java
if (feature.hasProperty("Ocean")) { String oceanProperty = feature.getProperty("Ocean"); }
אירועים של קליקים בגיאומטריה בפורמט GeoJSON
אפשר להשתמש ב-GeoJsonLayer.OnFeatureClickListener()
כדי להאזין לאירועים מסוג קליק
מידע גיאומטרי במפה. הדוגמה הבאה מתעדת את הכותרת של תכונה כשהמשתמש
לוחץ על התכונה:
Kotlin
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i("GeoJsonClick", "Feature clicked: ${feature.getProperty("title")}") }
Java
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener(new Layer.OnFeatureClickListener() { @Override public void onFeatureClick(Feature feature) { Log.i("GeoJsonClick", "Feature clicked: " + feature.getProperty("title")); } });
עיצוב של GeoJsonLayer ו-GeoJsonFeatures
אפשר להגדיר סגנונות ברירת מחדל ל-GeoJsonLayer, או לעצב תכונות ספציפיות בשכבה.
סגנונות ברירת מחדל
ב-GeoJsonLayer אפשר להגדיר סגנונות ברירת מחדל לכל נקודות או מחרוזות קוויות ופוליגונים שנוספים לשכבה. סגנונות ברירת המחדל חלים רק אם לתכונה אין סגנון מוגדר באף אחת מהגאומטריות שלה. כלשהו שינויים שיתבצעו בסגנון ברירת המחדל ישתקפו גם בכל התכונות שמשתמשים בסגנון ברירת המחדל.
כדי להחיל סגנון ברירת מחדל:
- מאחזרים את אובייקט סגנון ברירת המחדל הרלוונטי, שיכול להיות
GeoJsonPointStyle
,GeoJsonLineStringStyle
אוGeoJsonPolygonStyle
. - מחילים את האפשרויות הרצויות על הסגנון.
לדוגמה, דוגמת הקוד הבאה מראה איך לשנות את נקודת ברירת המחדל. סגנון שיגרום לגרירה של נקודות עם כותרת וקטע טקסט.
Kotlin
val pointStyle = layer.defaultPointStyle pointStyle.isDraggable = true pointStyle.title = "Hello, World!" pointStyle.snippet = "I am a draggable marker"
Java
GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle(); pointStyle.setDraggable(true); pointStyle.setTitle("Hello, World!"); pointStyle.setSnippet("I am a draggable marker");
סגנונות ספציפיים ל-GeoJsonFeature
לחלופין, אפשר לעצב תכונות בודדות בשכבה. השלבים
החלת סגנון על GeoJsonFeature
באופן הבא.
- יוצרים את אובייקט הסגנון הרלוונטי, שיכול להיות
GeoJsonPointStyle
,GeoJsonLineStringStyle
אוGeoJsonPolygonStyle
. - מחילים את האפשרויות הרצויות על הסגנון.
- מעבירים את אובייקט הסגנון אל
השיטה הרלוונטית ב
GeoJsonFeature
, שתהיהsetPointStyle()
,setLineStringStyle()
אוsetPolygonStyle()
לדוגמה, כך מתאימים אישית את סגנון המחרוזת
GeoJsonFeature
כך שהצבע שלו יהיה אדום.
Kotlin
// Create a new feature containing a linestring val lineStringArray: MutableList<LatLng> = ArrayList() lineStringArray.add(LatLng(0.0, 0.0)) lineStringArray.add(LatLng(50.0, 50.0)) val lineString = GeoJsonLineString(lineStringArray) val lineStringFeature = GeoJsonFeature(lineString, null, null, null) // Set the color of the linestring to red val lineStringStyle = GeoJsonLineStringStyle() lineStringStyle.color = Color.RED // Set the style of the feature lineStringFeature.lineStringStyle = lineStringStyle
Java
// Create a new feature containing a linestring List<LatLng> lineStringArray = new ArrayList<LatLng>(); lineStringArray.add(new LatLng(0, 0)); lineStringArray.add(new LatLng(50, 50)); GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray); GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null); // Set the color of the linestring to red GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle(); lineStringStyle.setColor(Color.RED); // Set the style of the feature lineStringFeature.setLineStringStyle(lineStringStyle);
צפייה באפליקציית ההדגמה
דוגמה לייבוא קובץ GeoJSON מכתובת URL ויצירת שכבה
ביחד, אפשר לראות את GeoJsonDemoActivity
באפליקציית ההדגמה
שנשלח יחד עם ספריית השירות. במדריך ההגדרה מוסבר איך
כדי להריץ את אפליקציית ההדגמה.