2017-03-08 96 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