Bing映射v8 MapTypeId与视图不匹配

时间:2017-03-08 20:13:25

标签: bing-maps

我有一张地图,我正在禁用街景,因此用户无法放大并可能会看到蓝色高光,这使得他们在放大太多时单击地图时会意外触发街景。但是,我希望他们能够在我提供的对话框上使用按钮,以便他们可以看到引脚上的位置(如果有)。

我的问题是,由于地图停止支持tryLocationToPixel,因此在街景视图中我的代码进行位置测试时会出现错误。问题是这些部分已经被以下代码保护。

if(!propertyMap || propertyMap.getMapTypeId() !== Microsoft.MapTypeId.road)
    return;

在进行进一步检查的同时通过console.log直观地确认我在街景中我可以告诉getMapTypeId()仍然为道路返回'r',即使视图已转换为街景。我使用以下代码将视图转换为街景。

propertyMap.setView({ center: location, streetsideOptions: { locationToLookAt: location } });
propertyMap.setMapType(Microsoft.Maps.MapTypeId.streetside);

我的地图创建如下

var map = new Microsoft.Maps.Map('#compsMap',
    {
        credentials: $('#bing-key').text(),
        enableClickableLogo: false,
        enableSearchLogo: false,
        showCopyright: false,
        showDashboard: false,
        showMapTypeSelector: false,
        showScalebar: false,
        disableStreetside: true,
        streetsideOptions: { showCurrentAddress: false },
        zoom: 17
    });

任何检测地图的方法目前都在街景中吗?目前,我添加了一个try-catch来隐藏错误,以防止它破坏其他东西,但这不是一个理想的解决方案。

注意:maptypedchanged事件不适用于以编程方式更改的视图,因此也不是有效的解决方案。

1 个答案:

答案 0 :(得分:0)

很可能会回归" r"因为街边还没有满载。它不会返回" x"直到街边实际可见。如果街边不可用,它将回溯到道路。因此,如果加载了街边,地图不会更改它返回的地图类型ID。

那就是说,如果你已禁用街边,然后以编程方式加载它,它将始终返回" r"因为街边是残疾人士。您可以在代码中忽略它并覆盖它,但用户无法自己进入街边。基本上,不支持您描述的场景。