- Giriş
- KML katmanı ekleme
- KML katmanını temizleme
- KML kapsayıcılarına erişme
- 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 harita üzerinde coğrafi verileri temsil eder. Bu yardımcı programı kullanarak KML nesnelerini coğrafi şekillere dönüştürebilir ve bunları haritanın üzerinde bir 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, Ground oluşturacak, Belge veya Klasör'de getProperties()
komutunu çağırın.
Haritaya KML katmanı eklensin
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.
Yerel bir kaynaktan KML veri kümesini içe aktarmak ve oluşturmak için aşağıdakilere ihtiyacınız vardır:
- Katmanın oluşturulacağı bir
GoogleMap
nesnesi. - KML verilerini içeren yerel bir kaynak dosyası.
- Yerel kaynak dosyasını açmak için gerekli olan
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 bir akıştan içe aktarmak ve oluşturmak için aşağıdakilere ihtiyacınız vardır:
- Katmanın oluşturulacağı bir
GoogleMap
nesnesi. - KML verilerini içeren bir
InputStream
. - Yerel kaynakları açmak için gerekli olan
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);
Bir KmlLayer
oluşturduktan sonra, içe aktarılan verileri haritaya eklemek için addLayerToMap()()
işlevini çağırın.
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
KML katmanını temizleme
KmlLayer
adlı dosyayı sizin 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()
çağrısı yapın:
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
KML kapsayıcılarına erişme
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 yapabileceğiniz gibi getContainers()
çağrısı yapabilirsiniz
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 yer bindirmelerine erişim
Katmana eklenen herhangi bir yer işaretine veya yer bindirmesine
erişmek için bir katman ya da kapsayıcıda
getPlacemarks()
ya da
getGroundOverlays()
çağırabilirsiniz. İkisinden birinin çağrılması durumunda, sırasıyla KmlPlacemarks
veya KmlGroundOverlays
iterasyonlu sonuç döndürülü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 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 (varsa) 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 Geometri 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 bununla bir katman oluşturma örneği için demo uygulamasında yardımcı program kitaplığıyla birlikte gönderilen KmlDemoActivity
öğesine göz atın. Kurulum kılavuzu, demo uygulamasının nasıl çalıştırılacağını gösterir.
KML tarafından desteklenen ö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 | <Fotoğraf Bindirme> desteklenmiyor |
<Camera> | no | |
<Değiştir> | kısmen | yalnızca stil değişiklikleri desteklenir |
<color> | kısmen | #AABBGGRR ve #BBGGRR'yi içerir; <Screen oluşturacak> ve <GroundKatmanlar>'da 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> öğeleri ve$[dataName] formunun varlık değişimleri desteklenmez. |
<extrude> | no | |
<fill> | evet | |
<flyToView> | no | <NetworkLinkControl> desteklenmiyor |
<Klasör> | evet | |
<gridOrigin> | Yok | <Fotoğraf Bindirme> desteklenmiyor |
<GroundOverlay> | evet | |
<heading> | evet | |
<hotSpot> | evet | |
<href> | evet | |
<httpQuery> | no | |
<Icon> | evet | |
<IconStyle> | evet | |
<ImagePyramid> | Yok | <Fotoğraf Bindirme> desteklenmiyor |
<innerBoundaryIs> | evet | dolaylı olarak <LinearRing> sıralamasından |
<ItemIcon> | Yok | <ListStyle> desteklenmiyor |
<key> | evet | |
<kml> | evet | |
<LabelStyle> | no | |
<latitude> | evet | |
<LatLonAltBox> | no | |
<LatLonBox> | evet | |
<leftFov> | Yok | <Fotoğraf Bindirme> 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 | <Fotoğraf Bindirme> desteklenmiyor |
<maxLodPixels> | no | |
<maxSessionLength> | no | |
<maxWidth> | Yok | <Fotoğraf Bindirme> desteklenmiyor |
<message> | no | |
<minAltitude> | no | |
<minFadeExtent> | no | |
<minLodPixels> | no | |
<minRefreshPeriod> | no | <NetworkLink> |
<Model> | no | |
<MultiGeometry> | evet | |
<name> | evet | |
<yakın> | Yok | <Fotoğraf Bindirme> desteklenmiyor |
<NetworkLink> | no | |
<NetworkLinkControl> | no | |
<north> | evet | |
<open> | evet | Mülk değeri olarak depolanır |
<Orientation> | Yok | <Model> desteklenmiyor |
<outerBoundaryIs> | evet | dolaylı olarak <LinearRing> 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 | <Fotoğraf Bindirme> 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 | <ScreenYer paylaşımı> desteklenmiyor |
<shape> | Yok | <Fotoğraf Bindirme> 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 Stil Haritaları desteklenmez |
<styleUrl> | evet | |
<targetHref> | no | <Alias> desteklenmiyor |
<tessellate> | no | |
<text> | evet | |
<textColor> | no | |
<tileSize> | Yok | <Fotoğraf Bindirme> desteklenmiyor |
<tilt> | no | |
<TimeSpan> | no | |
<TimeStamp> | no | |
<topFov> | Yok | <Fotoğraf Bindirme> desteklenmiyor |
<Güncelle> | Yok | <NetworkLinkControl< desteklenmiyor |
<value> | evet | |
<viewBoundScale> | no | |
<viewFormat> | no | |
<viewRefreshMode> | no | |
<viewRefreshTime> | no | |
<ViewVolume> | Yok | <Fotoğraf Bindirme> desteklenmiyor |
<visibility> | evet | |
<west> | evet | |
<when> | Yok | <Zaman Damgası> desteklenmiyor |
<width> | evet |