2017-03-08 80 views
0

我有一张地图,禁用街景视图,因此用户无法放大,并可能看到蓝色突出显示,使其在缩放时单击地图时不小心触发街景太多了。但是,我希望他们能够在我提供的对话框上使用按钮,以便他们在可用的情况下查看引脚上的位置。Bing地图v8 MapTypeId不匹配视图

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

回答

0

它可能会返回“r”,因为街边尚未完全加载。它不会返回“x”,直到街道真正可见。如果streetide不可用,它将回落到道路上。因此,地图不会更改它返回的地图类型ID,直到加载街边时(如果加载它)。

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

+0

是的,我只是启用街边,并会看看是否有任何投诉,如果是这样只是完全删除功能。更简单的解决方案,只是不理想。 – user2927848