如何检索本地变量(地理位置HTML5和谷歌地图API)
How to retrieve local variable (geolocation HTML5 and Google Maps API)?
我遇到了这个问题:我想检索地理位置定义的位置,以便在我的calcRoute函数中使用它作为起点,例如,下面是代码:
function calcRoute(){
var pos;
navigator.geolocation.getCurrentPosition
(
function(position)
{
pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
}
);
var start = pos;
alert(start); // pb here : start is undefined, how could I get the pos value ?
//...
}
谢谢你的帮助!
您定义的函数是一个回调函数,一旦检索到位置就会调用该函数。
失败的原因有两个:
- 你根本不知道回调函数是否会被调用在
calcRoute
的其他部分之前(这实际上非常不太可能,因为它是异步的) - ,即使它在结束之前被调用
calcRoute
,pos
在不同的作用域,所以你不能改变它这种方式。
您可能会试图诉诸全局变量来解决第二个问题,但您将无法解决第一个问题。为什么不把剩下的代码放在回调函数中呢?
function calcRoute(){
navigator.geolocation.getCurrentPosition
(
function(position)
{
var pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
var start = pos;
alert(start);
}
);
}
编辑:更详细的答案来解释为什么走这条路
function calcRoute(){
var pos;
navigator.geolocation.getCurrentPosition
(
function(position)
{
pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
var start = pos;
alert(start);
}
);
//...
}
因为它是回调,所以将在稍后执行。但是你可以把你的代码分开,让它执行。
function calcRoute(){
navigator.geolocation.getCurrentPosition
(
function(position)
{
var pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
furtherCode(pos);
}
);
}
function furtherCode(position){
var start = pos;
alert(start);
//...
}
相关文章:
- 安卓平台上的QWebView HTML5地理位置
- Possibile使用Manifest v2下的HTML5地理位置API将lat/long转换为国家/地区
- 使用html5地理位置api创建地理围栏
- HTML5地理位置,询问位置
- HTML5地理位置非异步
- 如何使用HTML5地理位置javascript初始化带有地理位置(用户的当前位置)的Google Maps API
- 各种浏览器中的HTML5地理位置API
- 测试是否已授予 html5 地理位置权限
- iOS HTML5 地理位置 - 当浏览器无权使用地理位置时没有错误
- 即使设置了所有选项,HTML5地理位置也不起作用
- 为什么这个依赖于HTML5地理位置的javascript代码出错
- HTML5地理位置地址表单填充器未捕获语法错误:意外的标记<
- HTML5地理位置监视位置正在重新加载完整的地图,而不仅仅是位置
- 谷歌地图API显示空白地图时,从HTML5地理位置提供LatLng线
- Chrome中无法使用HTML5地理位置的错误处理
- Javascript和HTML5地理位置-如何存储位置
- 带有HTML5地理位置的Android Webview
- 在半径内的Html5地理位置搜索
- 我如何使用GMaps API来显示默认为用户的HTML5地理位置的可拖动引脚?
- HERE地图使用HTML5地理位置