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