Google Haritalar KML İçe Aktarma Yardımcı Programı

Platform seçin: Android iOS JavaScript
  1. Giriş
  2. KML katmanı ekleme
  3. KML katmanını temizleme
  4. KML kapsayıcılarına erişme
  5. KML yer işaretlerine ve KML zemin yer paylaşımlarına erişme
  6. KML özelliklerine erişim
  7. 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
&lt;AddressDetails&gt; hayır
&lt;Alias&gt; hayır
&lt;altitude&gt; hayır
&lt;altitudeMode&gt; hayır
&lt;atom:author&gt; hayır
&lt;atom:link&gt; hayır
&lt;atom:name&gt; hayır
&lt;BalloonStyle&gt; kısmen yalnızca <text> desteklenir
&lt;begin&gt; Yok &lt;TimeSpan&gt; desteklenmiyor
&lt;bgColor&gt; hayır
&lt;bottomFov&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;Camera&gt; hayır
&lt;Change&gt; kısmen yalnızca stil değişiklikleri desteklenir
&lt;color&gt; kısmen #AABBGGRR ve #BBGGRR etiketlerini içerir; <ScreenOverlay> ve <GroundOverlay> için desteklenmez
&lt;colorMode&gt; evet
&lt;cookie&gt; hayır &lt;NetworkLinkControl&gt; desteklenmiyor
&lt;coordinates&gt; evet
&lt;Create&gt; hayır
&lt;Data&gt; hayır
&lt;Delete&gt; hayır
&lt;description&gt; evet Yalnızca düz metindir, HTML içeriği desteklenmez
&lt;displayMode&gt; hayır
&lt;displayName&gt; hayır
&lt;Document&gt; evet
&lt;drawOrder&gt; evet
&lt;east&gt; evet
&lt;end&gt; Yok &lt;TimeSpan&gt; desteklenmiyor
&lt;expires&gt; hayır &lt;NetworkLinkControl&gt; desteklenmiyor
&lt;ExtendedData&gt; kısmen yazılmamış <Veri> yalnızca, <SimpleData> yok veya <Schema> ya da$[dataName] formunun varlık değiştirmeleri desteklenmez.
&lt;extrude&gt; hayır
&lt;fill&gt; evet
&lt;flyToView&gt; hayır &lt;NetworkLinkControl&gt; desteklenmiyor
&lt;Folder&gt; evet
&lt;gridOrigin&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;GroundOverlay&gt; evet
&lt;heading&gt; evet
&lt;hotSpot&gt; evet
&lt;href&gt; evet
&lt;httpQuery&gt; hayır
&lt;Icon&gt; evet
&lt;IconStyle&gt; evet
&lt;ImagePyramid&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;innerBoundaryIs&gt; evet dolaylı olarak <DoğrusalRing> etiketinden sipariş
&lt;ItemIcon&gt; Yok &lt;ListStyle&gt; desteklenmiyor
&lt;key&gt; evet
&lt;kml&gt; evet
&lt;LabelStyle&gt; hayır
<enlem> evet
&lt;LatLonAltBox&gt; hayır
&lt;LatLonBox&gt; evet
&lt;leftFov&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;LinearRing&gt; evet
&lt;LineString&gt; evet
&lt;LineStyle&gt; evet
<Bağlantı> hayır
&lt;linkDescription&gt; Yok &lt;NetworkLinkControl&gt; desteklenmiyor
&lt;linkName&gt; Yok &lt;NetworkLinkControl&gt; desteklenmiyor
&lt;linkSnippet&gt; Yok &lt;NetworkLinkControl&gt; desteklenmiyor
&lt;listItemType&gt; Yok &lt;ListStyle&gt; desteklenmiyor
&lt;ListStyle&gt; hayır
&lt;Location&gt; Yok &lt;Model&gt; desteklenmiyor
&lt;Lod&gt; evet
<boylam> evet
&lt;LookAt&gt; hayır
&lt;maxAltitude&gt; hayır
&lt;maxFadeExtent&gt; hayır
&lt;maxHeight&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;maxLodPixels&gt; hayır
&lt;maxSessionLength&gt; hayır
&lt;maxWidth&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
<message> hayır
&lt;minAltitude&gt; hayır
&lt;minFadeExtent&gt; hayır
&lt;minLodPixels&gt; hayır
&lt;minRefreshPeriod&gt; hayır &lt;NetworkLink&gt;
&lt;Model&gt; hayır
&lt;MultiGeometry&gt; evet
&lt;name&gt; evet
&lt;near&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;NetworkLink&gt; hayır
&lt;NetworkLinkControl&gt; hayır
&lt;north&gt; evet
&lt;open&gt; evet Özellik değeri olarak depolanır
<Yön> Yok &lt;Model&gt; desteklenmiyor
&lt;outerBoundaryIs&gt; evet dolaylı olarak <DoğrusalRing> etiketinden sipariş
&lt;outline&gt; evet
&lt;overlayXY&gt; hayır
&lt;Pair&gt; evet
&lt;phoneNumber&gt; kısmen Özellik değeri olarak depolanır
&lt;PhotoOverlay&gt; hayır
<Yer İşareti> evet
&lt;Point&gt; evet
&lt;Polygon&gt; evet
&lt;PolyStyle&gt; evet
&lt;range&gt; evet
&lt;refreshInterval&gt; hayır
&lt;refreshMode&gt; hayır
&lt;refreshVisibility&gt; hayır
&lt;Region&gt; evet
&lt;ResourceMap&gt; Yok &lt;Model&gt; desteklenmiyor
&lt;rightFov&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;roll&gt; Yok &lt;Camera&gt; ve <Model> desteklenmiyor
&lt;rotation&gt; evet
&lt;rotationXY&gt; hayır
&lt;Scale&gt; Yok &lt;Model&gt; desteklenmiyor
&lt;scale&gt; evet
&lt;Schema&gt; hayır
&lt;SchemaData&gt; hayır
&lt;ScreenOverlay&gt; hayır
&lt;screenXY&gt; Yok &lt;ScreenOverlay&gt; desteklenmiyor
&lt;shape&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;SimpleData&gt; Yok &lt;SchemaData&gt; desteklenmiyor
&lt;SimpleField&gt; Yok &lt;Schema&gt; desteklenmiyor
&lt;size&gt; evet
&lt;Snippet&gt; hayır
&lt;south&gt; evet
&lt;state&gt; Yok &lt;ListStyle&gt; desteklenmiyor
&lt;Style&gt; evet
&lt;StyleMap&gt; kısmen Vurgulanan stil sağlanmadı. Satır içi StyleHaritalar desteği
&lt;styleUrl&gt; evet
&lt;targetHref&gt; hayır &lt;Alias&gt; desteklenmiyor
&lt;tessellate&gt; hayır
&lt;text&gt; evet
&lt;textColor&gt; hayır
&lt;tileSize&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;tilt&gt; hayır
&lt;TimeSpan&gt; hayır
&lt;TimeStamp&gt; hayır
&lt;topFov&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
<Güncelle> Yok &lt;NetworkLinkControl&lt; desteklenmiyor
&lt;value&gt; evet
&lt;viewBoundScale&gt; hayır
&lt;viewFormat&gt; hayır
&lt;viewRefreshMode&gt; hayır
&lt;viewRefreshTime&gt; hayır
&lt;ViewVolume&gt; Yok &lt;PhotoOverlay&gt; desteklenmiyor
&lt;visibility&gt; evet
&lt;west&gt; evet
&lt;when&gt; Yok &lt;TimeStamp&gt; desteklenmiyor
&lt;width&gt; evet