- Giriş
- KML katmanı ekleme
- KML katmanını temizleme
- KML kapsayıcılarına erişme
- KML yer işaretlerine ve KML zemin yer paylaşımlarına erişme
- KML özelliklerine erişim
- KML tarafından desteklenen özellikler
Giriş
KML
şunun bir uzantısıdır:
XML
veri biçimini kullanır ve harita üzerindeki coğrafi verileri gösterir. Bu yardımcı programı kullanarak
KML nesnelerini coğrafi şekillere dönüştürebilir ve bunları
olduğunu görebilirsiniz. KML verilerinizi haritaya eklemek ve haritadan kaldırmak için şu numarayı arayın:
addLayerToMap()
removeLayerFromMap()
tıklayın. Bir KML nesnesindeki özelliklere erişmek için şunu arayın:
getProperties()
herhangi bir Yer İşareti, Zemin Bindirme, Doküman veya
Klasör.
Haritaya KML katmanı ekleme
Haritaya bir veri katmanı eklemek için önce
KmlLayer
sınıf. Örnek oluşturmak için iki yöntem vardır:
KmlLayer
Yerel bir kaynaktan KML veri kümesini içe aktarmak ve oluşturmak için gerekenler:
- Katmanın oluşturulacağı
GoogleMap
nesnesi. - KML verilerini içeren yerel bir kaynak dosyası.
- Yerel bir kaynağı açmak için gerekli olan
Context
nesnesi dosyası olarak kaydedebilirsiniz.
Kotlin
val layer = KmlLayer(map, R.raw.geojson_file, context)
Java
KmlLayer layer = new KmlLayer(map, R.raw.geojson_file, context);
Yerel bir akıştan KML veri kümesini içe aktarmak ve oluşturmak için gerekenler:
- Katmanın oluşturulacağı
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);
KmlLayer
oluşturduktan sonra şu numarayı arayın:
İçe aktarılan verileri haritaya eklemek için addLayerToMap()()
.
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()
komutunu çağırın:
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
KML kapsayıcılarına erişme
Katmanınıza eklenmiş tüm kapsayıcılara erişmek için
oluşturduğunuz katmanda getContainers()
komutunu çağırabilirsiniz.
Herhangi bir kapsayıcıda iç içe yerleştirilmiş kapsayıcı olup olmadığını kontrol etmek için şunu çağırabilirsiniz:
hasContainers()
Aşağıdakine benzer şekilde, iç içe yerleştirilmiş bu kapsayıcılara erişmek için
katmanınızda neler yapabileceğinizi
getContainers()
.
KmlLayer
içinde iç içe yerleştirilmemiş kapsayıcılara erişmek için
veya KmlContainer:
Kotlin
for (containers in layer.containers) { // Do something to container }
Java
for (KmlContainer containers : layer.getContainers()) { // Do something to container }
KmlLayer
içinde iç içe yer alan kapsayıcılara erişmek için
veya KmlContainer
:
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şim
Mevcut bir yer işaretine ya da zemin bindirmesine erişmek için
eklemek isterseniz getPlacemarks()
veya
Bir katman veya kapsayıcıda getGroundOverlays()
. Aşağıdakilerden biri aranır:
KmlPlacemarks
değerindeki bir yinelemeyi döndürün veya
Sırasıyla KmlGroundOverlays
.
Ö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ı veya yer işaretindeki herhangi bir mülke erişmek için
getProperty()
ve bir özellik anahtarı verin. Ayrıca şu numarayı da arayabilirsiniz:
Dosyanın mevcut olup olmadığını kontrol etmek için hasProperty()
. Bu örnekte,
"name" özellik değerini al başka bir kapsayıcı olan veri kümesi olabilir.
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
Şuradaki tıklama etkinliklerini dinlemek için KmlLayer.OnFeatureClickListener()
kullanabilirsiniz:
Geometri özelliklerini görebilirsiniz. Aşağıdaki örnekte, kullanıcı aşağıdaki işlemleri gerçekleştirdiğinde bir özelliğin kimliğini günlüğe kaydeder:
Kullanıcı özelliği tıkladığında
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 uygulamayı göster
KML dosyasını içe aktarma ve katman oluşturma örneği için
demo uygulamadaki KmlDemoActivity
uygulamasına göz atın.
kitaplığıyla birlikte gönderilir. Kurulum kılavuzu, bu cihazın nasıl
nasıl çalıştırabileceğinizi göstereceğim.
KML tarafından desteklenen özellikler
KML Öğesi | Destekleniyor mu? | Yorum |
---|---|---|
<address> | kısmen | Özellik değeri olarak depolanır |
<AddressDetails> | hayır | |
<Alias> | hayır | |
<altitude> | hayır | |
<altitudeMode> | hayır | |
<atom:author> | hayır | |
<atom:link> | hayır | |
<atom:name> | hayır | |
<BalloonStyle> | kısmen | yalnızca <text> desteklenir |
<begin> | Yok | <TimeSpan> desteklenmiyor |
<bgColor> | hayır | |
<bottomFov> | Yok | <PhotoOverlay> desteklenmiyor |
<Camera> | hayır | |
<Change> | kısmen | yalnızca stil değişiklikleri desteklenir |
<color> | kısmen | #AABBGGRR ve #BBGGRR etiketlerini içerir; <ScreenOverlay> ve <GroundOverlay> için desteklenmez |
<colorMode> | evet | |
<cookie> | hayır | <NetworkLinkControl> desteklenmiyor |
<coordinates> | evet | |
<Create> | hayır | |
<Data> | hayır | |
<Delete> | hayır | |
<description> | evet | Yalnızca düz metindir, HTML içeriği desteklenmez |
<displayMode> | hayır | |
<displayName> | hayır | |
<Document> | evet | |
<drawOrder> | evet | |
<east> | evet | |
<end> | Yok | <TimeSpan> desteklenmiyor |
<expires> | hayır | <NetworkLinkControl> desteklenmiyor |
<ExtendedData> | kısmen | yazılmamış <Veri> yalnızca, <SimpleData> yok veya <Schema> ya da$[dataName] formunun varlık değiştirmeleri desteklenmez. |
<extrude> | hayır | |
<fill> | evet | |
<flyToView> | hayır | <NetworkLinkControl> desteklenmiyor |
<Folder> | evet | |
<gridOrigin> | Yok | <PhotoOverlay> desteklenmiyor |
<GroundOverlay> | evet | |
<heading> | evet | |
<hotSpot> | evet | |
<href> | evet | |
<httpQuery> | hayır | |
<Icon> | evet | |
<IconStyle> | evet | |
<ImagePyramid> | Yok | <PhotoOverlay> desteklenmiyor |
<innerBoundaryIs> | evet | dolaylı olarak <DoğrusalRing> etiketinden sipariş |
<ItemIcon> | Yok | <ListStyle> desteklenmiyor |
<key> | evet | |
<kml> | evet | |
<LabelStyle> | hayır | |
<enlem> | evet | |
<LatLonAltBox> | hayır | |
<LatLonBox> | evet | |
<leftFov> | Yok | <PhotoOverlay> desteklenmiyor |
<LinearRing> | evet | |
<LineString> | evet | |
<LineStyle> | evet | |
<Bağlantı> | hayır | |
<linkDescription> | Yok | <NetworkLinkControl> desteklenmiyor |
<linkName> | Yok | <NetworkLinkControl> desteklenmiyor |
<linkSnippet> | Yok | <NetworkLinkControl> desteklenmiyor |
<listItemType> | Yok | <ListStyle> desteklenmiyor |
<ListStyle> | hayır | |
<Location> | Yok | <Model> desteklenmiyor |
<Lod> | evet | |
<boylam> | evet | |
<LookAt> | hayır | |
<maxAltitude> | hayır | |
<maxFadeExtent> | hayır | |
<maxHeight> | Yok | <PhotoOverlay> desteklenmiyor |
<maxLodPixels> | hayır | |
<maxSessionLength> | hayır | |
<maxWidth> | Yok | <PhotoOverlay> desteklenmiyor |
<message> | hayır | |
<minAltitude> | hayır | |
<minFadeExtent> | hayır | |
<minLodPixels> | hayır | |
<minRefreshPeriod> | hayır | <NetworkLink> |
<Model> | hayır | |
<MultiGeometry> | evet | |
<name> | evet | |
<near> | Yok | <PhotoOverlay> desteklenmiyor |
<NetworkLink> | hayır | |
<NetworkLinkControl> | hayır | |
<north> | evet | |
<open> | evet | Özellik değeri olarak depolanır |
<Yön> | Yok | <Model> desteklenmiyor |
<outerBoundaryIs> | evet | dolaylı olarak <DoğrusalRing> etiketinden sipariş |
<outline> | evet | |
<overlayXY> | hayır | |
<Pair> | evet | |
<phoneNumber> | kısmen | Özellik değeri olarak depolanır |
<PhotoOverlay> | hayır | |
<Yer İşareti> | evet | |
<Point> | evet | |
<Polygon> | evet | |
<PolyStyle> | evet | |
<range> | evet | |
<refreshInterval> | hayır | |
<refreshMode> | hayır | |
<refreshVisibility> | hayır | |
<Region> | evet | |
<ResourceMap> | Yok | <Model> desteklenmiyor |
<rightFov> | Yok | <PhotoOverlay> desteklenmiyor |
<roll> | Yok | <Camera> ve <Model> desteklenmiyor |
<rotation> | evet | |
<rotationXY> | hayır | |
<Scale> | Yok | <Model> desteklenmiyor |
<scale> | evet | |
<Schema> | hayır | |
<SchemaData> | hayır | |
<ScreenOverlay> | hayır | |
<screenXY> | Yok | <ScreenOverlay> desteklenmiyor |
<shape> | Yok | <PhotoOverlay> desteklenmiyor |
<SimpleData> | Yok | <SchemaData> desteklenmiyor |
<SimpleField> | Yok | <Schema> desteklenmiyor |
<size> | evet | |
<Snippet> | hayır | |
<south> | evet | |
<state> | Yok | <ListStyle> desteklenmiyor |
<Style> | evet | |
<StyleMap> | kısmen | Vurgulanan stil sağlanmadı. Satır içi StyleHaritalar desteği |
<styleUrl> | evet | |
<targetHref> | hayır | <Alias> desteklenmiyor |
<tessellate> | hayır | |
<text> | evet | |
<textColor> | hayır | |
<tileSize> | Yok | <PhotoOverlay> desteklenmiyor |
<tilt> | hayır | |
<TimeSpan> | hayır | |
<TimeStamp> | hayır | |
<topFov> | Yok | <PhotoOverlay> desteklenmiyor |
<Güncelle> | Yok | <NetworkLinkControl< desteklenmiyor |
<value> | evet | |
<viewBoundScale> | hayır | |
<viewFormat> | hayır | |
<viewRefreshMode> | hayır | |
<viewRefreshTime> | hayır | |
<ViewVolume> | Yok | <PhotoOverlay> desteklenmiyor |
<visibility> | evet | |
<west> | evet | |
<when> | Yok | <TimeStamp> desteklenmiyor |
<width> | evet |