googlemapsapi/JavaScript变量

googlemapsapi/JavaScript变量,javascript,google-maps,Javascript,Google Maps,我使用基本地理定位获取用户long/lat,然后将坐标对添加到全局变量(global.usr),然后生成一个新的地图元素,其中global.usr是地图的中心 看起来很直截了当,返回了一个灰色、空白的谷歌地图元素 var x=document.getElementById(“警报”); 函数getLocation(){ if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(getLocation); }否则{ 警告(“您不支持此项”); }

我使用基本地理定位获取用户long/lat,然后将坐标对添加到全局变量(global.usr),然后生成一个新的地图元素,其中global.usr是地图的中心

看起来很直截了当,返回了一个灰色、空白的谷歌地图元素

var x=document.getElementById(“警报”); 函数getLocation(){ if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(getLocation); }否则{ 警告(“您不支持此项”); } } getLocation(); var全局={}; 功能显示位置(位置) { global.coords=new google.maps.LatLng( 位置坐标纬度, 位置坐标经度 ); } var mapElement=document.getElementById(“映射画布”); var map=new google.maps.map(mapElement{ 中心:global.coords, 缩放:4 });
根据我的评论,您似乎想提供
showPosition
,而不是
getLocation
作为
getCurrentPosition
的参数。您还需要考虑到
getCurrentPosition
方法是非阻塞的,因此getLocation将立即返回,您将在实际拥有坐标之前继续定义map元素。我想你真的想要这样的东西:

var x = document.getElementById("alert"), 
    mapElement = document.getElementById("map-canvas"), 
    map;

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(getLocation);
    } else {
        alert("You don't support this");
    }
}
getLocation();


var global = {};

function showPosition(position)
{
    global.coords = new google.maps.LatLng(
        position.coords.latitude,
        position.coords.longitude
    );
    defineMap();
}

function defineMap() {
    map = new google.maps.Map(mapElement, {
      center: global.coords,
      zoom: 4
    });
}

您可以在此处获得有关
getCurrentPosition
方法的更多信息:

navigator.geolocation.getCurrentPosition(getLocation)getCurrentPosition方法的第一个参数是成功接收坐标时运行的回调,将位置作为第一个参数传递。看见我猜您希望该行实际上是
navigator.geolocation.getCurrentPosition(showPosition)
,但这仍然不起作用,因为
getCurrentPosition
是异步的-不能保证它在定义map变量之前完成。