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');
}
希望它能帮助你强>