我已经实现了谷歌地图,而且我正在获得经度和经度,我希望这些值可以在谷歌地图功能之外使用。只有当我在谷歌地图代码中调用这些变量时,我才能将它们添加到DOM中。如何在谷歌地图功能之外使用这些变量。
点击地图后,我需要将这些纬度和经度值作为查询字符串附加到URL。
我不确定Closures如何正常工作。有人可以帮我将这些纬度和经度值添加到google maps 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>
答案 0 :(得分: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
声明)