我试图通过利用HTML5的地理位置功能来获取用户的当前纬度和经度值。在研究并试图从StackOverflow上的其他问题得到答案后,我似乎仍然误解了访问全局变量的概念。到目前为止,我所看到的一切都让它看起来像是范围有问题。我正在使用的代码看起来像是在函数中使用函数。我目前正在运行以下代码:
<script type="text/javascript">
var currentLat = 0;
var currentLong = 0;
function getPosition() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
}
function showPosition(position) {
console.log(position.coords.latitude);
console.log(position.coords.longitude);
}
getPosition();
此代码目前的工作原理是它将信息记录到控制台。但是,如果我将代码更改为此代码,它似乎无法正常工作:
<script type="text/javascript">
var currentLat = 0;
var currentLong = 0;
function getPosition() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
}
function showPosition(position) {
currentLat = position.coords.latitude;
currentLong = position.coords.longitude;
}
getPosition();
console.log(currentLat + "," + currentLong);
它只是像我原来设置的那样返回0。我已经在全局变量上搜索了很多,但是大多数在线资源(包括StackOverflow)声明我可以访问这些变量,只要我不在函数内重新声明变量(或者创建一个覆盖了变量的局部范围变量)全局变量)。
答案 0 :(得分:1)
感谢gro的评论,我发现这有效:
window.onload = function(){
navigator.geolocation.getCurrentPosition(function(position) {
window.currentLat = position.coords.latitude;
window.currentLong = position.coords.longitude;
window.currentLatLong = new google.maps.LatLng(currentLat,currentLong);
init();
});
}
function init() {
// run code here and reference currentLatLong, currentLat and currentLong
}