Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图(南,南)_Javascript_Google Maps_Location_Nan_Coordinate - Fatal编程技术网

Javascript 谷歌地图(南,南)

Javascript 谷歌地图(南,南),javascript,google-maps,location,nan,coordinate,Javascript,Google Maps,Location,Nan,Coordinate,我使用以下代码获取客户的地理坐标: loc={} if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position){ loc.lat = position.coords.latitude; loc.lng = position.coords.longitude;

我使用以下代码获取客户的地理坐标:

loc={}
if (navigator.geolocation)
{
   navigator.geolocation.getCurrentPosition(function(position){
      loc.lat = position.coords.latitude;
      loc.lng = position.coords.longitude;
                                                              });
}
然后我试着用下面的代码把它转换成谷歌地图坐标

var clientLocation = new google.maps.LatLng(loc.lat, loc.lng);
然而,这种情况正在恢复

(NaN,NaN)

有人能指出我可能做错了什么吗?

这很可能是因为getCurrentPosition()是异步的,但您需要的是同步响应

getCurrentPosition()将函数作为参数,我假设它在完成运行后将调用该参数。您的函数是更新loc对象的回调函数

问题是您希望在getCurrentPosition完成运行之前更新loc

您应该做的是让函数调用LatLng创建,如下所示:

var loc={} // Don't forget the var declaration, or you might mess with the global scope
if (navigator.geolocation)
{
   navigator.geolocation.getCurrentPosition(function(position){
      loc.lat = position.coords.latitude;
      loc.lng = position.coords.longitude;
      createLatLng();
   });
}

function createLatLng() {
     var clientLocation = new google.maps.LatLng(loc.lat, loc.lng);
     // and whatever else you need to do when you have the coordinate
}

实际上,它将把loc.lat和loc.lng作为2个参数。这就是你得到的(NaN,NaN)错误。通过直接传递坐标值使用以下代码

 navigator.geolocation.getCurrentPosition(onSuccess, onError);
  function onSuccess(pos) {
     var myCenter = new google.maps.LatLng(pos.coords.latitude,pos.coords.longitude);
     var mapProp = {
        center: myCenter,
        zoom: 15,
        mapTypeId: google.maps.MapTypeId.ROADMAP
     };
     var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
     var marker = new google.maps.Marker({
        position: myCenter,
     });
    marker.setMap(map);
  }

  function onError(){
     alert('error');
  }
希望它能帮助你