【发布时间】:2016-03-27 23:22:07
【问题描述】:
我是 JavaScript 新手,我希望实现 Google 提供的代码,以便在您的位置放置一个标记。但是,我想获取位置数据并在“getCurrentPosition”块之外使用它。
我的第一个步骤是在块之外实例化一个具有 lat 和 long as 属性的对象,并将其作为 getCurrentPosition 内部函数的参数:
function initMap() {
var pos = {
lat: 42.1,
lng: -74.1
};
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 42, lng: -74},
zoom: 6
});
var infoWindow = new google.maps.InfoWindow({map: map});
// Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position, pos) {
pos.lat = position.coords.latitude;
pos.lng = position.coords.longitude;
map.setCenter(pos);
}, function() {
handleLocationError(true, infoWindow, map.getCenter());
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
}
var marker = new google.maps.Marker({
position: pos,
map: map,
title: 'Release Source'
});
}
这样做的效果是标记将在对象实例化时指定的位置。这些是占位符值,因为我当前的位置在几个州之外。
'pos.lat = position.coords.latitude' 和 'pos.lng = position.coords.longitude' 不会覆盖实例化全局“pos”对象时设置的属性值。
地图不是以我当前位置为中心,而是基于实例化时最初分配给“pos”的占位符 lat 和 long 值。
当我更改为“navigator.geolocation.getCurrentPosition(function(position){ ... }",
这将删除对“getCurrentPosition”块内的全局“pos”变量的引用。似乎创建了一个名为“pos”的局部变量。
块内“pos”的本地实例将根据我当前的位置分配其纬度和经度。然后按照块中的说明,地图以我当前的位置为中心。
但是,标记将显示在原始纬度经度处,当全局变量“pos”被实例化时,该纬度经度被分配为占位符值。
请告诉我如何在“getCurrentPosition”块之外获取当前纬度/经度值数据并进入全局“pos”对象。
【问题讨论】:
标签: javascript google-maps google-maps-api-3