- מבוא
- הוספת שכבת KML
- ניקוי שכבת KML
- גישה למאגרי KML
- גישה לסמנים של KML ולשכבות-על של קרקע KML
- גישה למאפייני KML
- תכונות נתמכות ב-KML
מבוא
KML
הוא הרחבה של
XML
בפורמט נתונים ומייצג נתונים גיאוגרפיים במפה. השימוש בכלי הזה מאפשר לכם
יכול להמיר אובייקטי KML לצורות גיאוגרפיות ולהציג אותם כשכבה
בראש המפה. כדי להוסיף ולהסיר את נתוני ה-KML במפה או ממנה, צריך להתקשר
addLayerToMap()
ו-removeLayerFromMap()
בהתאמה. כדי לגשת למאפיינים באובייקט KML, יש לקרוא
getProperties()
בכל סמן, שכבת-על של קרקע, מסמך או
תיקייה.
הוספת שכבת KML למפה
כדי להוסיף שכבת נתונים למפה, קודם צריך ליצור מופע של
כיתה אחת (KmlLayer
). יש שתי דרכים ליצור
KmlLayer
כדי לייבא ולעבד מערך נתונים של KML ממשאב מקומי, צריך:
- אובייקט
GoogleMap
שבו רוצים לעבד את השכבה. - קובץ משאבים מקומי שמכיל את נתוני ה-KML.
- אובייקט
Context
, שנדרש לפתיחת משאב מקומי חדש.
val layer = KmlLayer(map, R.raw.geojson_file, context)
KmlLayer layer = new KmlLayer(map, R.raw.geojson_file, context);
כדי לייבא ולעבד מערך נתונים של KML מזרם מקומי, צריך:
- אובייקט
GoogleMap
שבו רוצים לעבד את השכבה. InputStream
שמכיל את נתוני ה-KML.- אובייקט
Context
, שנדרש לפתיחת משאבים מקומיים.
val inputStream: InputStream? = // InputStream containing KML data val layer = KmlLayer(map, inputStream, context)
InputStream inputStream = // InputStream containing KML data KmlLayer layer = new KmlLayer(map, inputStream, context);
אחרי שיוצרים KmlLayer
, צריך להתקשר
addLayerToMap()()
כדי להוסיף את הנתונים המיובאים למפה.
layer.addLayerToMap()
layer.addLayerToMap();
ניקוי של שכבת KML
נניח שיצרתם את KmlLayer
:
val inputStream: InputStream? = // InputStream containing KML data val layer = KmlLayer(map, inputStream, context)
InputStream inputStream = // InputStream containing KML data KmlLayer layer = new KmlLayer(map, inputStream, context);
כדי להסיר את השכבה מהמפה, קוראים לפונקציה removeLayerFromMap()
:
layer.removeLayerFromMap()
layer.removeLayerFromMap();
גישה למאגרי KML
כדי לגשת לקונטיינרים שנוספו לשכבה,
אפשר להפעיל את getContainers()
בשכבה שיצרתם.
כדי לבדוק אם מאגר תגים כלשהו מכיל קונטיינרים מקוננים, אפשר לקרוא
hasContainers()
כדי לגשת למאגרי המאגרים הפנימיים האלה, בדומה ל-
מה שאפשר לעשות בשכבה, אפשר לקרוא
getContainers()
כדי לגשת למאגרי תגים שלא מקוננים ב-KmlLayer
או KmlContainer:
for (containers in layer.containers) { // Do something to container }
for (KmlContainer containers : layer.getContainers()) { // Do something to container }
כדי לגשת למאגרי תגים שנמצאים בתוך KmlLayer
או KmlContainer
:
fun accessContainers(containers: Iterable<KmlContainer>) { for (container in containers) { if (container.hasContainers()) { accessContainers(container.containers) } }
public void accessContainers(Iterable<KmlContainer> containers) { for (KmlContainer container : containers) { if (container.hasContainers()) { accessContainers(container.getContainers()); } } }
גישה לסמנים של KML ולשכבות-על של קרקע בפורמט KML
כדי לגשת לכל סמן או שכבת-על של קרקע שכבר
לשכבה, אפשר לקרוא ל-getPlacemarks()
או
getGroundOverlays()
בשכבה או בקונטיינר. השיחה תבוצע
להחזיר ערך איטרציה של KmlPlacemarks
או
KmlGroundOverlays
בהתאמה.
לדוגמה, כדי לגשת לאובייקטים KmlPlacemark
משכבה:
for (placemark in layer.placemarks) { // Do something to Placemark }
for (KmlPlacemark placemark : layer.getPlacemarks()) { // Do something to Placemark }
גישה למאפייני KML
כדי לגשת למאפיין כלשהו במאגר או בסמן, מפעילים
getProperty()
ונותנים לו מפתח מאפיין. אפשר גם להתקשר
hasProperty()
כדי לבדוק אם הוא קיים. הדוגמה הזו מראה איך
לאחזר את ערך המאפיין 'name' ממאגר תגים, אם קיים.
for (container in layer.containers) { if (container.hasProperty("name")) { Log.i("KML", container.getProperty("name")) } }
for (KmlContainer container : layer.getContainers()) { if (container.hasProperty("name")) { Log.i("KML", container.getProperty("name")); } }
אירועים של קליקים בגיאומטריה של KML
אפשר להשתמש ב-KmlLayer.OnFeatureClickListener()
כדי להאזין לאירועים מסוג קליק
מידע גיאומטרי במפה. בדוגמה הבאה מתעדת מזהה של תכונה כשהמשתמש
לוחץ על התכונה:
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i( "KML", "Feature clicked: " + feature.id ) }
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener(new KmlLayer.OnFeatureClickListener() { @Override public void onFeatureClick(Feature feature) { Log.i("KML", "Feature clicked: " + feature.getId()); } });
צפייה באפליקציית ההדגמה
דוגמה לייבוא קובץ KML וליצירת שכבה
ביחד, אפשר לראות את KmlDemoActivity
באפליקציית ההדגמה
שנשלח יחד עם ספריית השירות. במדריך ההגדרה מוסבר איך
כדי להריץ את אפליקציית ההדגמה.
תכונות נתמכות של KML
רכיב KML | יש תמיכה? | תגובה |
---|---|---|
<address> | באופן חלקי | מאוחסן כערך נכס |
<AddressDetails> | לא | |
<Alias> | לא | |
<altitude> | לא | |
<altitudeMode> | לא | |
<atom:author> | לא | |
<atom:link> | לא | |
<atom:name> | לא | |
<BalloonStyle> | באופן חלקי | רק <טקסט> נתמך |
<begin> | לא רלוונטי | <TimeSpan> לא נתמך |
<bgColor> | לא | |
<bottomFov> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<Camera> | לא | |
<Change> | באופן חלקי | יש תמיכה רק בשינויי סגנון |
<color> | באופן חלקי | כולל #AABBGGRR ו- #BBGGRR; לא נתמכת בשכבות <ScreenOverlay> ו-<GroundOverlay> |
<colorMode> | כן | |
<cookie> | לא | <NetworkLinkControl> לא נתמך |
<coordinates> | כן | |
<Create> | לא | |
<Data> | לא | |
<Delete> | לא | |
<description> | כן | טקסט פשוט בלבד, אין תמיכה בתוכן HTML |
<displayMode> | לא | |
<displayName> | לא | |
<Document> | כן | |
<drawOrder> | כן | |
<east> | כן | |
<end> | לא רלוונטי | <TimeSpan> לא נתמך |
<expires> | לא | <NetworkLinkControl> לא נתמך |
<ExtendedData> | באופן חלקי | untyped <Data> בלבד, לא <SimpleData> או <Schema>, וחלופי ישויות של הטופס$[dataName]. |
<extrude> | לא | |
<fill> | כן | |
<flyToView> | לא | <NetworkLinkControl> לא נתמך |
<Folder> | כן | |
<gridOrigin> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<GroundOverlay> | כן | |
<heading> | כן | |
<hotSpot> | כן | |
<href> | כן | |
<httpQuery> | לא | |
<Icon> | כן | |
<IconStyle> | כן | |
<ImagePyramid> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<innerBoundaryIs> | כן | באופן מרומז מ-<LinearRing> הזמנה |
<ItemIcon> | לא רלוונטי | <ListStyle> לא נתמך |
<key> | כן | |
<kml> | כן | |
<LabelStyle> | לא | |
<latitude> | כן | |
<LatLonAltBox> | לא | |
<LatLonBox> | כן | |
<leftFov> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<LinearRing> | כן | |
<LineString> | כן | |
<LineStyle> | כן | |
<קישור> | לא | |
<linkDescription> | לא רלוונטי | <NetworkLinkControl> לא נתמך |
<linkName> | לא רלוונטי | <NetworkLinkControl> לא נתמך |
<linkSnippet> | לא רלוונטי | <NetworkLinkControl> לא נתמך |
<listItemType> | לא רלוונטי | <ListStyle> לא נתמך |
<ListStyle> | לא | |
<Location> | לא רלוונטי | <Model> לא נתמך |
<Lod> | כן | |
<longitude> | כן | |
<LookAt> | לא | |
<maxAltitude> | לא | |
<maxFadeExtent> | לא | |
<maxHeight> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<maxLodPixels> | לא | |
<maxSessionLength> | לא | |
<maxWidth> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<message> | לא | |
<minAltitude> | לא | |
<minFadeExtent> | לא | |
<minLodPixels> | לא | |
<minRefreshPeriod> | לא | <NetworkLink> |
<Model> | לא | |
<MultiGeometry> | כן | |
<name> | כן | |
<near> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<NetworkLink> | לא | |
<NetworkLinkControl> | לא | |
<north> | כן | |
<open> | כן | מאוחסן כערך נכס |
<כיוון> | לא רלוונטי | <Model> לא נתמך |
<outerBoundaryIs> | כן | באופן מרומז מ-<LinearRing> הזמנה |
<outline> | כן | |
<overlayXY> | לא | |
<Pair> | כן | |
<phoneNumber> | באופן חלקי | מאוחסן כערך נכס |
<PhotoOverlay> | לא | |
<סמן> | כן | |
<Point> | כן | |
<Polygon> | כן | |
<PolyStyle> | כן | |
<range> | כן | |
<refreshInterval> | לא | |
<refreshMode> | לא | |
<refreshVisibility> | לא | |
<Region> | כן | |
<ResourceMap> | לא רלוונטי | <Model> לא נתמך |
<rightFov> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<roll> | לא רלוונטי | <Camera> ו-<Model> הן לא נתמכות |
<rotation> | כן | |
<rotationXY> | לא | |
<Scale> | לא רלוונטי | <Model> לא נתמך |
<scale> | כן | |
<Schema> | לא | |
<SchemaData> | לא | |
<ScreenOverlay> | לא | |
<screenXY> | לא רלוונטי | <ScreenOverlay> לא נתמך |
<shape> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<SimpleData> | לא רלוונטי | <SchemaData> הן לא נתמכות |
<SimpleField> | לא רלוונטי | <Schema> הן לא נתמכות |
<size> | כן | |
<Snippet> | לא | |
<south> | כן | |
<state> | לא רלוונטי | <ListStyle> לא נתמך |
<Style> | כן | |
<StyleMap> | באופן חלקי | הסגנון המודגש לא נבחר. אין תמיכה במפות סגנונות מוטבעות |
<styleUrl> | כן | |
<targetHref> | לא | <Alias> לא נתמך |
<tessellate> | לא | |
<text> | כן | |
<textColor> | לא | |
<tileSize> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<tilt> | לא | |
<TimeSpan> | לא | |
<TimeStamp> | לא | |
<topFov> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<עדכון> | לא רלוונטי | <NetworkLinkControl< לא נתמך |
<value> | כן | |
<viewBoundScale> | לא | |
<viewFormat> | לא | |
<viewRefreshMode> | לא | |
<viewRefreshTime> | לא | |
<ViewVolume> | לא רלוונטי | <PhotoOverlay> לא נתמך |
<visibility> | כן | |
<west> | כן | |
<when> | לא רלוונטי | <TimeStamp> לא נתמך |
<width> | כן |