javascript - 使用 OpenLayers 每隔 x 秒调用 ajax 方法后删除旧标记添加新标记
问题描述
我想使用 ajax 方法每 x 秒更改一次标记位置,但我面临 1 个问题,因为新标记正在添加到 OpenLayers,但旧标记没有从 OpenLayers 中删除。我想先删除旧标记,然后在更新的位置添加新标记。
function ShowCurrentTime() {
var obj = {};
obj.device_id = $.trim($("\[id*=txtdevice_id\]").val());
var marker;
var mapOptions;
$.ajax({
url: "TRACKING.aspx/GetData",
data: JSON.stringify(obj),
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data) {
if (data.d != '') {
var lat = data.d\[1\];
var lng = data.d\[2\];
}
$.each(data, function(index, value) {
var zoom = 13;
var marker = new OpenLayers.Layer.Markers("Markers");
var lonLat = new OpenLayers.LonLat(lng, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.addLayer(marker);
map.removeLayer(marker);
marker.addMarker(new OpenLayers.Marker(lonLat));
map.setCenter(lonLat, zoom);
});
}
});
}
解决方案
您在 ajax 中再次初始化标记,先删除然后再次初始化
这应该工作
function ShowCurrentTime() {
var obj = {};
obj.device_id = $.trim($("\[id*=txtdevice_id\]").val());
var marker = null;
var mapOptions;
$.ajax({
url: "TRACKING.aspx/GetData",
data: JSON.stringify(obj),
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data) {
if (data.d != '') {
var lat = data.d\[1\];
var lng = data.d\[2\];
}
$.each(data, function(index, value) {
var zoom = 13;
if (marker != null) map.removeLayer(marker);
marker = new OpenLayers.Layer.Markers("Markers");
var lonLat = new OpenLayers.LonLat(lng, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.addLayer(marker);
marker.addMarker(new OpenLayers.Marker(lonLat));
map.setCenter(lonLat, zoom);
});
}
});
}
推荐阅读
- sql-server - 如何在计算过程中返回过程的部分结果?
- git - 只读 git 存储库偏差的版本控制
- python - 分组唯一日期,并基于计算熊猫创建新列
- mysql - AWS:将 Aurora MySQL RDS 实例从多可用区切换到单可用区
- postgresql - 无法连接 PostgreSQL 服务器
- ios - Raspberry-Pi 上的 iOS Appium 使用 Quamotion
- image - 如何在没有 go-flutter 的情况下在 Flutter 桌面中使用 image_picker 插件
- vba - PowerPoint VBA:如何将每张幻灯片单独保存为新演示文稿?
- salesforce - 如何使用设计属性从社区中的静态资源中提供图像路径
- android - 如何动态包含合并布局?