2017-05-30 16 views
4

私はバージョン6.3からBing Mapsバージョン8.0へのアップグレードを進めています。ここでエラーを投げて、その下の私のアップグレードされたコードである:それは実行した後Bing Maps v8.0 Microsoft.Maps.Locationはクロムのコンストラクタではありません

var Points = [new Microsoft.Maps.Location(0, 0), new Microsoft.Maps.Location(0, 0)] 

上記の行は、上記の問題は、Google Chromeブラウザで起こる

"TypeError: Microsoft.Maps.Location is not a constructor"

を言って私にエラーを与えます。しかし、同じことがInternet Explorerでうまくいきます。

提案が役に立ちます。

ありがとうございます。

よろしく、 ラーフル

+0

クロムに同じエラーが発生しました。誰もが同じ問題を経験して解決策を持っていますか? – meen

答えて

2

問題は、マップ制御スクリプトがロードされる前にMicrosoft.Maps名前空間を使用しようとしている可能性が高いです。 V8マップ・スクリプトはパフォーマンスのために非同期にロードされますが、マップ・コントロールをロードするスクリプト・タグの直後にコード内の名前空間にアクセスしようとすると、ネームスペースはそこには存在しません。マップスクリプトがロードされるまで待つためにコードが必要です。これを処理するには、マップスクリプトタグURLにコールバック関数名を追加します。例:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <meta charset="utf-8" /> 
    <script type='text/javascript'> 
    var map; 

    function GetMap() 
    { 
     map = new Microsoft.Maps.Map('#myMap', { 
      credentials: 'YourBingMapsKey' 
     }); 

     //Add your post map load code here. 
    } 
    </script> 

    <script type='text/javascript' src='https://www.bing.com/api/maps/mapcontrol?callback=GetMap' async defer></script> 
</head> 
<body> 
    <div id="myMap" style=";width:800px;height:600px;"></div> 
</body> 
</html> 

マップのロードコードの後に​​mapスクリプトタグを追加することをおすすめします。その理由は、ページがリフレッシュされると、マップスクリプトがキャッシュされ、すぐにコールバック関数を呼び出すため、コールバック関数がすでにロードされている必要があるからです。

+0

あなたの提案をありがとう!それはIEでうまく動作します。 Chromeで失敗する理由 – Shyam

+0

ブラウザはリソースを多少異なる方法でロードしますが、これが原因である可能性があります。あなたは時折、おそらくあなたがリフレッシュボタンを押すと、IEで問題を見るかもしれません。 – rbrundritt

関連する問題