繁体   English   中英

在OpenLayers中定位和/或修改KML区域

[英]Targeting and/or modifying a KML region in OpenLayers

我已经使用Google地图为地图构建了多个Javascript应用程序,希望能够在OpenLayers中重新创建它们。 我发现他们网站上的文档非常混乱且难以浏览。 到目前为止,我可以使用以下代码加载KML:

var map = new OpenLayers.Map({
            div: divName,
            layers: [
                new OpenLayers.Layer.OSM(),
                new OpenLayers.Layer.Vector("KML", {
                    strategies: [new OpenLayers.Strategy.Fixed()],
                    protocol: new OpenLayers.Protocol.HTTP({
                        url: "data.kml",
                        format: new OpenLayers.Format.KML({
                            extractStyles: true, 
                            extractAttributes: true,
                            maxDepth: 4
                        })
                    })
                })
            ],
            zoom: 4
        });
        map.setCenter(
            new OpenLayers.LonLat(-97, 38).transform(
                new OpenLayers.Projection("EPSG:4326"),
                map.getProjectionObject()
            ), 4
        );

我想做的是能够修改或定位单个KML区域。 例如,仅附加单击事件,或更改区域的背景颜色。
我环顾四周,似乎找不到一个很好的例子。 如果有帮助,我也加载了jQuery。 任何帮助将不胜感激。

您可以使用OpenLayers.Control.SelectFeature对象将事件添加到OpenLayers映射

要更改对象的背景,应该使用类似的方法

var myVectorLayer = map.getLayersByName("KML")[0];

var highlightCtrl = new OpenLayers.Control.SelectFeature(myVectorLayer , {
                hover: true,
                highlightOnly: true,
                renderIntent: "temporary"                   
            });

  var selectCtrl = new OpenLayers.Control.SelectFeature(myVectorLayer ,
         {clickout: true}
   );

  map.addControl(highlightCtrl);
  map.addControl(selectCtrl);

要触发更多事件/从所选功能中获取更多详细信息,您可以使用

myVectorLayer.events.on({
            "featureselected": function (e) {
                 alert(e.type + " - " + e.feature.id);
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM