我有地图更新功能
这是代码
function update() {
ajaxLoader.removeClass('mc-warning-noConnection');
ajaxLoader.show();
$.ajax({
url: '/Mobile/Map/GetMapData',
type: 'GET',
timeout: 10000,
success: function (data) {
if (data.redirectUrl) window.location.replace(data.redirectUrl);
else if (data.error) alert(data.error);
else {
setTimeout(function () { ajaxLoader.hide() }, 300);
data.forEach(function (vehicleData) {
mapWrapper.getEntity(vehicleData.Imei).update(vehicleData);
});
}
},
error: function () {
ajaxLoader.addClass('mc-warning-noConnection');
},
complete: function () {
timeout = setTimeout(update, 10000);
}
});
}
需要通过控制器
从db获取值这是控制器代码。
public async Task<ActionResult> GetMapData()
{
var mapData = await repository.GetVehicleMapData(15, null).ConfigureAwait(false);
Session["PreviousMapQueryTime"] = DateTime.Now.AddMinutes(-5); //5 minutes offset because tables aren't always up-to-date
return CreateJsonDataResult(mapData);
}
然后将它们传递给地图并更新标记。
这是MapWrapper脚本
标记一切正常,但更新时缩放不起作用。
当我重新加载地图时一切都好。但不是在没有重新加载整页的情况下进行更新。
问题出在哪里以及如何解决?
答案 0 :(得分:0)
您应该在更新实体后使用mapWrapper.zoomToLayer(layerID)
函数,其中Layerid是放置实体的图层的ID。
success: function (data) {
if (data.redirectUrl) window.location.replace(data.redirectUrl);
else if (data.error) alert(data.error);
else {
setTimeout(function () { ajaxLoader.hide() }, 300);
data.forEach(function (vehicleData) {
mapWrapper.getEntity(vehicleData.Imei).update(vehicleData);
});
mapWrapper.zoomToLayer(layerID);
}
},