Bing maps v8 MapTypeId 与视图不匹配

Bing maps v8 MapTypeId does not match view

我有一张地图,我在其中禁用了街景视图,因此用户无法放大并且可能会看到蓝色高亮显示,从而允许他们在放大太多时单击地图时意外触发街景视图。但是,我希望他们能够在我提供的对话中使用一个按钮,这样他们就可以看到图钉上的位置(如果可用)。

我的问题是,由于地图停止支持 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 事件也不适用于以编程方式更改的视图,因此这也不是有效的解决方案。

可能 return "r" 因为路边还没有完全加载。它不会 return "x" 直到街边真正可见。如果街边不可用,它将回退到道路。因此,地图不会更改地图类型 ID returns,直到加载街边(如果加载的话)。

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