更改地图更新(JS)上的缩放

时间:2017-12-04 09:13:13

标签: javascript c# asp.net-mvc google-maps google-maps-api-3

我有地图更新功能

这是代码

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脚本

MapWrapper

标记一切正常,但更新时缩放不起作用。

当我重新加载地图时一切都好。但不是在没有重新加载整页的情况下进行更新。

问题出在哪里以及如何解决?

1 个答案:

答案 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);
                    }
                },