0

私は Google マップを実装しており、緯度と経度を取得しています。これらの値を Google マップ機能の外で使用したいと考えています。Google マップ コード内でこれらの変数を呼び出す場合にのみ、それらを DOM に追加できます。これらの変数を Google マップ関数の外部で使用するにはどうすればよいですか。

マップをクリックしたら、これらの緯度と経度の値をクエリ文字列として URL に追加する必要があります。

クロージャーが正確にどのように機能するかわかりません。これらの緯度と経度の値を Google マップの initilaize() 関数の外のクエリ文字列に追加するのを手伝ってくれませんか。

以下は私のコードです。

<script>
function initialize() {
  var mapOptions = {
    center: new google.maps.LatLng(44.397, -122.644),
    zoom: 4,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
  var marker = new google.maps.Marker({
    position: new google.maps.LatLng(44.397, -122.644),
    map: map,
    draggable: true
  });
  google.maps.event.addListener(map, 'mousemove', function ques(event) {
    var lat_value = event.latLng.lat();
    var lon_value = event.latLng.lng();
    document.getElementById("llat").value = lat_value;
    document.getElementById("llon").value = lon_value;
  });
  google.maps.event.addListener(map, 'click', function cclick() {
  })
}
</script>
<script>
$(function () {
  // Access functions and variables defined in google maps initialize() function here
  if(document.location.href.indexOf('?') == -1) {
    window.location = window.location + "?lat_value";
  }
});
</script>

フィドル

4

1 に答える 1

0

ここで JS クロージャを使用する必要はありません。そのメソッドのスコープ外にハンドラーを記述する必要さえありませんinitializemousemoveハンドラーと同じ方法で実行してください。

google.maps.event.addListener(map, 'click', function (e) {
    var lat_value = e.latLng.lat();
    var lon_value = e.latLng.lng();
    window.location = window.location.href.split('?')[0] 
      + "?lat_value=" + lat_value
      + "&long_value=" + lon_value;
});

ただし、一般的には、initialize の外部で変数にアクセスしたい場合mapOptionsは、outer-scope で定義するだけです (つまり、 のvar mapOptions前に宣言を行いますfunction initialize)。

于 2013-03-10T06:05:43.517 に答える