Select to view content in your preferred language

ArcGIS interactive KML layer

695
1
Jump to solution
10-31-2016 11:40 AM
robertparham
New Contributor II

I am working on an ArcGIS map. I need to be able to interact with KML layers.

Here is a minimal version of my current code:

    map = new Map("map", {
      basemap: "topo",
      center: [-108.663, 42.68],
      zoom: 6
    });
    parser.parse();

    var kmlUrl = "https://dl.dropboxusercontent.com/u/2142726/esrijs-samples/Wyoming.kml";
    var kml = new KMLLayer(kmlUrl);
    map.addLayer(kml);
    kml.on("load", function() {
      console.log("done");
    });

[Here is a fiddle](https://plnkr.co/edit/vtB24sZbZGaeHCEsU1ch?p=preview)

I'm looking to achieve something more like [this map](https://developers.arcgis.com/javascript/3/samples/fl_hover/), which outlines the layer on hover. (This example is from the [FeatureLayer](https://developers.arcgis.com/javascript/3/jsapi/featurelayer-amd.html) class, but my KML is dynamically generated. Is it possible to create a featurelayer dynamically from KML data?)

How can I listen for mouseover on a KML shape?

0 Kudos
1 Solution

Accepted Solutions
robertparham
New Contributor II

I figured it out...

    var kmlUrl = "https://dl.dropboxusercontent.com/u/2142726/esrijs-samples/Wyoming.kml";
    var kml = new KMLLayer(kmlUrl);
    map.addLayer(kml);
    kml.on("load", function() {
      var layers = kml.getLayers()  
      layers[0].on("mouse-over", function () {
                alert("mousy bitch");
            });
    });

Turns out the KML layer is actually composed of FeatureLayers. The solution is to get the Feature Layers from the KMLLayer wi the `getLayers()` method.

View solution in original post

0 Kudos
1 Reply
robertparham
New Contributor II

I figured it out...

    var kmlUrl = "https://dl.dropboxusercontent.com/u/2142726/esrijs-samples/Wyoming.kml";
    var kml = new KMLLayer(kmlUrl);
    map.addLayer(kml);
    kml.on("load", function() {
      var layers = kml.getLayers()  
      layers[0].on("mouse-over", function () {
                alert("mousy bitch");
            });
    });

Turns out the KML layer is actually composed of FeatureLayers. The solution is to get the Feature Layers from the KMLLayer wi the `getLayers()` method.

0 Kudos