0

我已经实现了谷歌地图并且我得到了纬度和经度,我希望在谷歌地图功能之外使用这些值。只有当我在谷歌地图代码中调用这些变量时,我才能将它们添加到 DOM。我如何在谷歌地图功能之外使用这些变量。

单击地图时,我需要将这些纬度和经度值作为查询字符串附加到 URL。

我不确定闭包是如何工作的。有人可以帮我将这些纬度和经度值添加到谷歌地图 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 闭包。您甚至不需要在该initialize方法的范围之外编写处理程序。只需按照与处理程序相同的方式进行操作mousemove即可:

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;
});

一般来说,如果您想在mapOptions初始化之外访问您的变量,只需在外部范围中定义它(即在var mapOptions之前进行声明function initialize)。

于 2013-03-10T06:05:43.517 回答