- مقدمة
- إضافة 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
.
الذي يمكنك الوصول إليه باستخدام تكرار حلقي for-each كما هو موضح أدناه.
Kotlin
for (feature in layer.features) { // Do something to the feature }
Java
for (GeoJsonFeature feature : layer.getFeatures()) { // Do something to the feature }
استخدام الطريقتَين 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
" في التطبيق.
يتم تضمينها مع مكتبة الخدمات. يوضح لك دليل الإعداد كيفية
لتشغيل التطبيق التجريبي.