- Giriş
- KML katmanı ekleme
- KML katmanını temizleme
- KML kapsayıcılarına erişim
- KML yer işaretlerine ve KML yer bindirmelerine erişme
- KML özelliklerine erişim
- KML tarafından desteklenen özellikler
Giriş
KML, XML veri biçiminin bir uzantısıdır ve bir harita üzerinde coğrafi verileri temsil eder. Bu yardımcı programı kullanarak, KML nesnelerini coğrafi şekillere dönüştürebilir ve haritanın üzerinde katman olarak oluşturabilirsiniz. KML verilerinizi haritaya eklemek ve haritadan kaldırmak için sırasıyla addLayerToMap()
ve removeLayerFromMap()
numaralı telefonu arayın. Bir KML nesnesindeki özelliklere erişmek için herhangi bir Yer İşareti, GroundOverlay, Doküman veya Klasör'de getProperties()
çağrısı yapın.
Haritaya KML katmanı eklemek
Haritaya veri katmanı eklemek için önce KmlLayer
sınıfının bir örneğini oluşturun. KmlLayer
örneğini iki şekilde gösterebilirsiniz.
Bir KML veri kümesini yerel bir kaynaktan içe aktarmak ve oluşturmak için aşağıdakilere ihtiyacınız vardır:
- Katmanın oluşturulacağı
GoogleMap
nesnesi. - KML verilerini içeren yerel bir kaynak dosyası.
- Yerel kaynak dosyasını açmak için gerekli olan bir
Context
nesnesi.
Kotlin
val layer = KmlLayer(map, R.raw.geojson_file, context)
Java
KmlLayer layer = new KmlLayer(map, R.raw.geojson_file, context);
Bir KML veri kümesini yerel akıştan içe aktarmak ve oluşturmak için aşağıdakilere ihtiyacınız vardır:
- Katmanın oluşturulacağı
GoogleMap
nesnesi. - KML verilerini içeren bir
InputStream
. - Yerel kaynakları açmak için gerekli olan bir
Context
nesnesi.
Kotlin
val inputStream: InputStream? = // InputStream containing KML data val layer = KmlLayer(map, inputStream, context)
Java
InputStream inputStream = // InputStream containing KML data KmlLayer layer = new KmlLayer(map, inputStream, context);
KmlLayer
oluşturduktan sonra, içe aktarılan verileri haritaya eklemek için addLayerToMap()()
çağrısı yapın.
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
KML katmanını temizleme
Bu KmlLayer
öğesini oluşturduğunuzu varsayalım:
Kotlin
val inputStream: InputStream? = // InputStream containing KML data val layer = KmlLayer(map, inputStream, context)
Java
InputStream inputStream = // InputStream containing KML data KmlLayer layer = new KmlLayer(map, inputStream, context);
Katmanı haritadan kaldırmak için removeLayerFromMap()
numaralı telefonu arayın:
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
KML kapsayıcılarına erişim
Katmanınıza eklenen kapsayıcılara erişmek için oluşturduğunuz katmanda getContainers()
çağırabilirsiniz.
Herhangi bir kapsayıcının iç içe yerleştirilmiş kapsayıcıları olup olmadığını kontrol etmek için hasContainers()
yöntemini çağırabilirsiniz. Bu iç içe yerleştirilmiş kapsayıcılara erişmek için katmanınızda yapabildiğiniz gibi getContainers()
komutunu çağırabilirsiniz.
KmlLayer
veya KmlContainer:
içine yerleştirilmemiş kapsayıcılara erişmek için
Kotlin
for (containers in layer.containers) { // Do something to container }
Java
for (KmlContainer containers : layer.getContainers()) { // Do something to container }
KmlLayer
veya KmlContainer
içine yerleştirilmiş kapsayıcılara erişmek için:
Kotlin
fun accessContainers(containers: Iterable<KmlContainer>) { for (container in containers) { if (container.hasContainers()) { accessContainers(container.containers) } }
Java
public void accessContainers(Iterable<KmlContainer> containers) { for (KmlContainer container : containers) { if (container.hasContainers()) { accessContainers(container.getContainers()); } } }
KML yer işaretlerine ve KML zemin bindirmelerine erişme
Katmana eklenmiş herhangi bir yer işaretine veya yer bindirmesine
erişmek için bir katman ya da kapsayıcıda getPlacemarks()
ya da
getGroundOverlays()
çağrısı yapabilirsiniz. İkisinden birinin çağrılması, sırasıyla KmlPlacemarks
veya KmlGroundOverlays
yinelemesini döndürür.
Örneğin, bir katmandan KmlPlacemark
nesnesine erişmek için:
Kotlin
for (placemark in layer.placemarks) { // Do something to Placemark }
Java
for (KmlPlacemark placemark : layer.getPlacemarks()) { // Do something to Placemark }
KML özelliklerine erişim
Bir kapsayıcıdaki veya yer işaretindeki herhangi bir mülke erişmek için
getProperty()
yöntemini çağırın ve mülke bir mülk anahtarı verin. Mevcut olup olmadığını kontrol etmek için hasProperty()
numaralı telefonu da arayabilirsiniz. Bu örnekte, "name" özellik değerinin bir kapsayıcıdan (mevcutsa) nasıl alınacağı gösterilmektedir.
Kotlin
for (container in layer.containers) { if (container.hasProperty("name")) { Log.i("KML", container.getProperty("name")) } }
Java
for (KmlContainer container : layer.getContainers()) { if (container.hasProperty("name")) { Log.i("KML", container.getProperty("name")); } }
KML Geometrisi Tıklama Etkinlikleri
Haritadaki geometri özelliklerinde tıklama etkinliklerini dinlemek için KmlLayer.OnFeatureClickListener()
kullanabilirsiniz. Aşağıdaki örnekte, kullanıcı bir özelliği tıkladığında özelliğin kimliği günlüğe kaydedilir:
Kotlin
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i( "KML", "Feature clicked: " + feature.id ) }
Java
// 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()); } });
Demo uygulamaya göz atın
Bir KML dosyasını içe aktarma ve bu dosyayla katman oluşturma örneği için, demo uygulamasında yardımcı program kitaplığıyla birlikte gelen KmlDemoActivity
öğesine göz atın. Kurulum kılavuzu, demo uygulamanın nasıl çalıştırılacağını gösterir.
KML destekli özellikler
KML Öğesi | Destekleniyor mu? | Yorum |
---|---|---|
<address> | kısmen | Mülk değeri olarak depolanır |
<AddressDetails> | no | |
<Alias> | no | |
<altitude> | no | |
<altitudeMode> | no | |
<atom:author> | no | |
<atom:link> | no | |
<atom:name> | no | |
<BalloonStyle> | kısmen | yalnızca <text> desteklenir |
<begin> | Yok | <TimeSpan> desteklenmiyor |
<bgColor> | no | |
<bottomFov> | Yok | <PhotoOverlay> desteklenmiyor |
<Camera> | no | |
<Değiştir> | kısmen | yalnızca stil değişiklikleri desteklenir |
<color> | kısmen | #AABBGGRR ve #BBGGRR içerir; <ScreenOverlay> ve <GroundOverlay>'de desteklenmez |
<colorMode> | evet | |
<cookie> | no | <NetworkLinkControl> desteklenmiyor |
<coordinates> | evet | |
<Oluştur> | no | |
<Data> | no | |
<Sil> | no | |
<description> | evet | Yalnızca düz metin; HTML içeriği desteklenmez |
<displayMode> | no | |
<displayName> | no | |
<Document> | evet | |
<drawOrder> | evet | |
<east> | evet | |
<end> | Yok | <TimeSpan> desteklenmiyor |
<expires> | no | <NetworkLinkControl> desteklenmiyor |
<ExtendedData> | kısmen | Yalnızca yazılmamış <Data> için geçerlidir; < SimpleData> veya <Schema> yoktur ve form$[dataName] formunun varlık değişiklikleri desteklenmez. |
<extrude> | no | |
<fill> | evet | |
<flyToView> | no | <NetworkLinkControl> desteklenmiyor |
<Klasör> | evet | |
<gridOrigin> | Yok | <PhotoOverlay> desteklenmiyor |
<GroundOverlay> | evet | |
<heading> | evet | |
<hotSpot> | evet | |
<href> | evet | |
<httpQuery> | no | |
<Icon> | evet | |
<IconStyle> | evet | |
<ImagePyramid> | Yok | <PhotoOverlay> desteklenmiyor |
<innerBoundaryIs> | evet | dolaylı olarak <DoğrusalRing> sıralamasından |
<ItemIcon> | Yok | <ListStyle> desteklenmiyor |
<key> | evet | |
<kml> | evet | |
<LabelStyle> | no | |
<latitude> | evet | |
<LatLonAltBox> | no | |
<LatLonBox> | evet | |
<leftFov> | Yok | <PhotoOverlay> desteklenmiyor |
<LinearRing> | evet | |
<LineString> | evet | |
<LineStyle> | evet | |
<Link> | no | |
<linkDescription> | Yok | <NetworkLinkControl> desteklenmiyor |
<linkName> | Yok | <NetworkLinkControl> desteklenmiyor |
<linkSnippet> | Yok | <NetworkLinkControl> desteklenmiyor |
<listItemType> | Yok | <ListStyle> desteklenmiyor |
<ListStyle> | no | |
<Konum> | Yok | <Model> desteklenmiyor |
<Lod> | evet | |
<longitude> | evet | |
<LookAt> | no | |
<maxAltitude> | no | |
<maxFadeExtent> | no | |
<maxHeight> | Yok | <PhotoOverlay> desteklenmiyor |
<maxLodPixels> | no | |
<maxSessionLength> | no | |
<maxWidth> | Yok | <PhotoOverlay> desteklenmiyor |
<message> | no | |
<minAltitude> | no | |
<minFadeExtent> | no | |
<minLodPixels> | no | |
<minRefreshPeriod> | no | <NetworkLink> |
<Model> | no | |
<MultiGeometry> | evet | |
<name> | evet | |
<near> | Yok | <PhotoOverlay> desteklenmiyor |
<NetworkLink> | no | |
<NetworkLinkControl> | no | |
<north> | evet | |
<open> | evet | Mülk değeri olarak depolanır |
<Orientation> | Yok | <Model> desteklenmiyor |
<outerBoundaryIs> | evet | dolaylı olarak <DoğrusalRing> sıralamasından |
<outline> | evet | |
<overlayXY> | no | |
<Pair> | evet | |
<phoneNumber> | kısmen | Mülk değeri olarak depolanır |
<PhotoOverlay> | no | |
<Placemark> | evet | |
<Point> | evet | |
<Polygon> | evet | |
<PolyStyle> | evet | |
<range> | evet | |
<refreshInterval> | no | |
<refreshMode> | no | |
<refreshVisibility> | no | |
<Region> | evet | |
<ResourceMap> | Yok | <Model> desteklenmiyor |
<rightFov> | Yok | <PhotoOverlay> desteklenmiyor |
<roll> | Yok | <Kamera> ve <Model> desteklenmiyor |
<rotation> | evet | |
<rotationXY> | no | |
<Ölçek> | Yok | <Model> desteklenmiyor |
<scale> | evet | |
<Schema> | no | |
<SchemaData> | no | |
<ScreenOverlay> | no | |
<screenXY> | Yok | <ScreenOverlay> desteklenmiyor |
<shape> | Yok | <PhotoOverlay> desteklenmiyor |
<SimpleData> | Yok | <SchemaData> desteklenmiyor |
<SimpleField> | Yok | <Schema> desteklenmiyor |
<size> | evet | |
<Snippet> | no | |
<south> | evet | |
<state> | Yok | <ListStyle> desteklenmiyor |
<Style> | evet | |
<StyleMap> | kısmen | Vurgulanan stil sağlanmadı. Satır İçi StyleMap'ler desteklenmiyor |
<styleUrl> | evet | |
<targetHref> | no | <Alias> desteklenmiyor |
<tessellate> | no | |
<text> | evet | |
<textColor> | no | |
<tileSize> | Yok | <PhotoOverlay> desteklenmiyor |
<tilt> | no | |
<TimeSpan> | no | |
<TimeStamp> | no | |
<topFov> | Yok | <PhotoOverlay> desteklenmiyor |
<Güncelle> | Yok | <NetworkLinkControl< desteklenmiyor |
<value> | evet | |
<viewBoundScale> | no | |
<viewFormat> | no | |
<viewRefreshMode> | no | |
<viewRefreshTime> | no | |
<ViewVolume> | Yok | <PhotoOverlay> desteklenmiyor |
<visibility> | evet | |
<west> | evet | |
<when> | Yok | <TimeStamp> desteklenmiyor |
<width> | evet |