私はGoogleマップを試していて、その場でポリラインを作成しようとしています。基本的には、文書の本文内には、一定の時間、定期的に行を配置し、経過時間後にそれらを消去するsetInterval関数があります。問題はさまざまなマップ変数にアクセスすることで発生しますが、テストプログラム(下記)を呼び出すと、 "marker1 not defined"のようなエラーが発生します。マップの初期化ルーチンの外からマップ変数にアクセスすることは可能ですか?ここでGoogleマップの変数と機能の範囲
は、Javascriptのコードである - これは私がyouveはレースの問題を得たと思う、すべての頭の中に
var commsLine = [];
var marker1, marker2, marker3, map, Comms;
function initMap() {
latLng = new google.maps.LatLng(50.8917,-1.3989);
map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 7,
center: latLng,
mapTypeId: google.maps.MapTypeId.HYBRID,
scaleControl: true
});
marker1 = new google.maps.Marker({
position: new google.maps.LatLng(50.8917, 0),
map: map
});
marker2 = new google.maps.Marker({
position: new google.maps.LatLng(50.8917, -1.5),
map: map
});
marker3 = new google.maps.Marker({
position: new google.maps.LatLng(51.5, 0),
map: map
});
// DrawLine(); works when placed here but I want to call it from the
// setInterval function in the body
}
function DrawLine()
{
commsLine.push(marker1.getPosition());
commsLine.push(marker2.getPosition());
Comms = new google.maps.Polyline({
path: commsLine,
geodesic: true,
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 2
});
Comms.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initMap);
DrawLineが呼び出されたとき?コールバックを登録するために良いとされるよりも (initMapsはまだ呼び出されていないかもしれません...) –
ボディ内のjavascriptブロックで呼び出される必要があります。 – user3713442
'drawLine()'を起動するものは、 'initMap()'が呼び出されるまで発生してはなりません。あなたの他のjavascriptブロックはどのように見えますか? –