1

何らかの理由で、geoxml3 で KML ファイルをロードできません。ファイルの公開 URL と、Chrome、Safari、Firefox のファイルへのローカル参照を使用してみましたが、すべて効果がありませんでした。Chrome を使用すると、次のようなコンソール メッセージが表示されます

ファイルを取得できません。

私のコードは非常に単純です:

function initialize() {
var infowindow = new google.maps.InfoWindow({size: new google.maps.Size(150,50) });
var map_canvas = document.getElementById('map_canvas');
var center = new google.maps.LatLng(53, -88);
var map_options = {
  center: center,
  zoom: 4,
  mapTypeId: google.maps.MapTypeId.TERRAIN
};

var map = new google.maps.Map(map_canvas, map_options);

var myParser = new geoXML3.parser({map: map, singleInfoWindow: true});
myParser.parse('https://sites.google.com/site/.../home/kml-files/ontario_regions_yan_1.kml');
}

他の質問で提供されているさまざまな解決策をすべて試しましたが、ファイルをロードできませんでした! 私が見逃している簡単なものはありますか?

4

2 に答える 2

3

geoxml3 は xmlHttpRequest を使用して KML を取得します。xmlHttpRequest には同じドメイン制限があります。KML は、ロードしているページと同じドメインにある必要があります。または、ロードしているページと同じドメインにあるプロキシを介してロードする必要があります。

SO の質問 - xmlHttpRequest とクロスサイト制限

プロキシ経由で geocodezip.com 上の KML

KmlLayer にはその制限はありません (Google サーバーは KML を直接読み込んでいます)

ドメインは同じである必要があります。相対 URL はそれを保証します。http://geocodezip.comページから何かを読み込もうとしてhttp://www.geocodezip.comもうまくいきません:

geocodezip.comwww.geocodezip.comは異なるドメインです (見た目がどれほど似ていても)。相対パスは、ページが提供されている場所に対する相対パスです (geoxml3.js スクリプトではありません)。

于 2014-02-05T17:56:43.157 に答える