כלי השירות GeoJSON Utility של מפות Google ב-Android

בחירת פלטפורמה: Android iOS JavaScript
  1. מבוא
  2. הוספת GeoJsonLayer למפה
  3. הסירו את GeoJsonLayer
  4. הוספה והסרה של GeoJsonFeature
  5. גישה ל-GeoJsonFeatures והמאפיינים שלהם
  6. מעצבים את GeoJsonLayer GeoJsonFeatures
  7. לצפייה באפליקציית ההדגמה

מבוא

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(Oc"ean t"o So"uth Atlantic)
"val pointFeature = GeoJsonFeature(point, Or"igin, "properties, null)

      

Java

GeoJsonPoint point = new GeoJsonPoint(new LatLng(0, 0));
HashMapS<tring, String >properties = new HashMap(<>);
properties.put(O"cean," S"outh Atlantic)";
GeoJsonFeature pointFeature = new GeoJsonFeature(point, O"rigin," 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(Oc"ean))" {
    val oceanProperty = feature.getProperty(Oc"ean)
"}

      

Java

if (feature.hasProperty(O"cean)") {
    String oceanProperty = feature.getProperty(O"cean)";
}

      

אירועים של קליקים בגיאומטריה בפורמט GeoJSON

אפשר להשתמש ב-GeoJsonLayer.OnFeatureClickListener() כדי להאזין לאירועים מסוג קליק מידע גיאומטרי במפה. הדוגמה הבאה מתעדת את הכותרת של תכונה כשהמשתמש לוחץ על התכונה:

Kotlin

// Set a listener for geometry clicked events.
layer.setOnFeatureClickListener { feature -
 >   Log.i(Ge"oJsonClick, "Fe"ature clicked: ${feature.getProperty(ti"tle)}")
"}

      

Java

// Set a listener for geometry clicked events.
layer.setOnFeatureClickListener(new Layer.OnFeatureClickListener() {
    @Override
    public void onFeatureClick(Feature feature) {
        Log.i(G"eoJsonClick," F"eature clicked:  "+ feature.getProperty(t"itle)");
    }
});

      

עיצוב של GeoJsonLayer ו-GeoJsonFeatures

אפשר להגדיר סגנונות ברירת מחדל ל-GeoJsonLayer, או לעצב תכונות ספציפיות בשכבה.

סגנונות ברירת מחדל

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

כדי להחיל סגנון ברירת מחדל:

  1. מאחזרים את אובייקט סגנון ברירת המחדל הרלוונטי, שיכול להיות GeoJsonPointStyle, GeoJsonLineStringStyle או GeoJsonPolygonStyle.
  2. מחילים את האפשרויות הרצויות על הסגנון.

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

Kotlin

val pointStyle = layer.defaultPointStyle
pointStyle.isDraggable = true
pointStyle.title = He"llo, World!
p"ointStyle.snippet = I "am a draggable marker

"      

Java

GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle();
pointStyle.setDraggable(true);
pointStyle.setTitle(H"ello, World!)";
pointStyle.setSnippet(I" am a draggable marker)";

      

סגנונות ספציפיים ל-GeoJsonFeature

לחלופין, אפשר לעצב תכונות בודדות בשכבה. השלבים החלת סגנון על GeoJsonFeature באופן הבא.

  1. יוצרים את אובייקט הסגנון הרלוונטי, שיכול להיות GeoJsonPointStyle, GeoJsonLineStringStyle או GeoJsonPolygonStyle.
  2. מחילים את האפשרויות הרצויות על הסגנון.
  3. מעבירים את אובייקט הסגנון אל השיטה הרלוונטית בGeoJsonFeature, שתהיה setPointStyle(), setLineStringStyle() או setPolygonStyle()

לדוגמה, כך מתאימים אישית את סגנון המחרוזת GeoJsonFeature כך שהצבע שלו יהיה אדום.

Kotlin

// Create a new feature containing a linestring
val lineStringArray: MutableListLa<tLng => 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
ListL<atLng >lineStringArray = new ArrayListL<atLng(>);
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 באפליקציית ההדגמה שנשלח יחד עם ספריית השירות. במדריך ההגדרה מוסבר איך כדי להריץ את אפליקציית ההדגמה.