谷歌地图API& HTML5地理位置,map.getCenter()给出错误的值

时间:2016-09-15 07:25:40

标签: javascript html5 google-maps google-maps-api-3

我试图将用户当前位置写入数据库,但在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();

......但那不起作用(我对这张地图的新东西很吸引人,并且抓住稻草)。

1 个答案:

答案 0 :(得分:2)

您在https://developers.google.com/maps/documentation/javascript/examples/map-geolocation上添加到Google的示例代码中的行var latlng = map.getCenter();将在getCurrentPosition()函数之前执行。因此,在设置此变量时,地图的中心仍然是您在顶部定义它的位置。之后,getCurrentPosition()方法被触发。 您应该将额外的代码行添加到getCurrentPosition()函数中。