Javascript 在OpenLayers中定位和/或修改KML区域
我已经使用GoogleMaps为地图图表构建了几个Javascript应用程序,我希望在OpenLayers中重新创建这些应用程序。我发现他们网站上的文档非常混乱,很难浏览。 到目前为止,我可以使用以下代码加载我的KML:Javascript 在OpenLayers中定位和/或修改KML区域,javascript,jquery,geospatial,openlayers,openstreetmap,Javascript,Jquery,Geospatial,Openlayers,Openstreetmap,我已经使用GoogleMaps为地图图表构建了几个Javascript应用程序,我希望在OpenLayers中重新创建这些应用程序。我发现他们网站上的文档非常混乱,很难浏览。 到目前为止,我可以使用以下代码加载我的KML: var map = new OpenLayers.Map({ div: divName, layers: [ new OpenLayers.Layer.OSM(),
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);
}
});
我看到您在这里定义了这个变量:var myVectorLayer=map.getLayersByName(“KML”)[0];但我看不出它以后会被引用。这样做的目的是什么?虽然看起来myVectorLayer正在填充,但警报没有发生。此外,我也不完全确定如何修改KML区域的样式。该代码适用于KML内的各个地区还是整个KML?谢谢。如果你是Openlayers的新手,我建议你购买这本书-