0

だから私は私の単純なinitialize()機能を持っていて、緯度と経度の座標を更新できるようにする必要があるまでは正常に機能していました。これを行うには、最初の緯度と経度の座標で変数を定義し、それらをinitialize()関数の外に移動して (内部で参照)、更新された座標でそれらの変数の値を更新します (そして、マップを再初期化します)。

理由はわかりませんが、ページを更新しても地図が読み込まれません。変数を使用して関数内の座標を定義するように変更しましたが、正常に動作します。関数の外でそれらを定義した場合にのみ機能しません。

initialize()ただし、この変更前のようにページの読み込み時ではなく、コンソールで呼び出すと機能します。

コードは基本的に次のようになります

var latcoord= 1234;
var lngcoord= 1234;
function initialize() {
    var myLatlng = new google.maps.LatLng(latcoord, lngcoord);
    //ETC
}

問題を再現するために使用したフィドルは次のとおりです。

では、どうすればこれを機能させることができますか?関数の外で定義しないinitialize()と、変数を更新して新しい座標を表示できません。

4

1 に答える 1

1

これは変数スコープとは関係がなく、使用している値と関係があります。

if(latcoord === false) {// DOESN'T WORK
    latcoord = 120;
    lngcoord = 100;
}

「DOESWORK」ブロックを使用する場合は、値「false」を割り当てます。これにより、MapsAPIはそれを{0,0}として扱います。{120、100}をそれらに割り当てると、{120,100}は地球上に意味のある表現を持たないため、意味のある結果を得ることができません(最大緯度は90-北極)。

これを示すフィドルについては、関数の外側で{0,0}を使用して、「関数の内側」の例と同じ効果を取得し、関数の外側でLat/Longに意味のある値を使用するを参照してください。

于 2012-10-30T19:58:51.063 に答える