我试图将用户当前位置写入数据库,但在HTML 5地理位置之后,我得到了map.getCenter()的错误值。这是相关代码(来自2个不同的Google开发网站)。完整的代码可以在https://aslett.net/gmaps找到。
function load() {
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(47.6145, -122.3418),
zoom: 17,
mapTypeId: 'roadmap'
});
var infoWindow = new google.maps.InfoWindow({map: map});
// Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
infoWindow.setPosition(pos);
infoWindow.setContent('Location found.');
map.setCenter(pos);
}, function() {
handleLocationError(true, infoWindow, map.getCenter());
});
var latlng = map.getCenter();
var url = "add_marker.php?lat=" + latlng.lat() + "&lng=" + latlng.lng() + "&type=red";
downloadUrl(url, function(data, responseCode) {
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
}
问题是线(靠近底部)......
var latlng = map.getCenter();
......我期待它能给我HTML5地理位置线中设置的坐标(4行)...
map.setCenter(pos);
...但是它给了我设定的值(靠近顶部)......
center: new google.maps.LatLng(47.6145, -122.3418),
我也尝试使用...
获得该职位var latlng = infoWindow.getPosition();
......但那不起作用(我对这张地图的新东西很吸引人,并且抓住稻草)。
答案 0 :(得分:2)
您在https://developers.google.com/maps/documentation/javascript/examples/map-geolocation上添加到Google的示例代码中的行var latlng = map.getCenter();
将在getCurrentPosition()
函数之前执行。因此,在设置此变量时,地图的中心仍然是您在顶部定义它的位置。之后,getCurrentPosition()
方法被触发。
您应该将额外的代码行添加到getCurrentPosition()
函数中。