gpt4 book ai didi

javascript - OpenLayers 和 GeoJSON,不在同一坐标上乘以标记

转载 作者:数据小太阳 更新时间:2023-10-29 05:27:15 25 4
gpt4 key购买 nike

我的代码显示来自 GeoJSON 的标记,当我放大到缩放级别 10 时,它会加载 GeoJSON 文件,但我如何避免输出相同的标记?有没有办法检查特定位置是否已经存在标记?代码

map.events.register("zoomend", null, function(){

if(map.zoom == 10)
{
var bounds = map.getExtent();
console.log(bounds);
var ne = new OpenLayers.LonLat(bounds.right,bounds.top).transform(map.getProjectionObject(),wgs84);
var sw = new OpenLayers.LonLat(bounds.left,bounds.bottom).transform(map.getProjectionObject(),wgs84);
var vectorLayer = new OpenLayers.Layer.Vector();
map.addLayer(vectorLayer);
$.getJSON('ajax.php?a=markers&type=json&sw=('+sw.lon+','+sw.lat+')&ne=('+ne.lon+','+ne.lat+')',function(data){
//$.getJSON('test.json',function(data){
var geojson_format = new OpenLayers.Format.GeoJSON({
'externalProjection': wgs84,
'internalProjection': baseProjection
});
vectorLayer.addFeatures(geojson_format.read(data));
});
}
});

最佳答案

为什么不使用 BBOX Strategy [1]?

这将满足您的需求,并且性能肯定会更高(它将删除现有功能并在 zoomend 上重新加载新功能)。比较要素以添加新要素将需要大量 比较,并且 map 上的要素过多可能会以结束。

查看示例的js源。

HTH,

1 - http://openlayers.org/dev/examples/strategy-bbox.html

编辑:如果您想更改较少的代码,在添加之前调用 vectorLayer.removeAllFeatures() 将解决您的问题……您真的需要让功能不受限制吗?

关于javascript - OpenLayers 和 GeoJSON,不在同一坐标上乘以标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7742294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com