所以我一直在疯狂地研究这个话题,每次都得到相同的结果,而且我并没有真正得到任何有用的答案。我理解回调函数的概念是什么,但也许我实现它错了。所以这就是我所拥有的。
我正在处理谷歌地图任务,我还有其他一切正常工作,只是当他们来到页面时,我希望他们将当前位置存储在' start&#中39;变量在顶部。它可以存储为对象或数组,但没有区别。我已经使用警告框来测试我的输出,但我无法快速完成任务。我将在下面发布我的代码。
//set global variables that will be used for the maps later on in the script
var pj;
var tifton;
var nlv;
var direction;
var start ='default';
function initialize(){
pj = new google.maps.LatLng(41.048899, -95.822685); //map for pacific junction
tifton = new google.maps.LatLng(31.417032, -83.498785); //map for tifton
nlv = new google.maps.LatLng(36.228928, -115.112426); //map for north las vegas
//set the directions for the user
updateCoords(function(point){
if(point){
start = point.latitude;
}
});
alert(start); //it will not stop showing default as the result
drawMap(pj,"pj-map", "Pacific Junction, IA");
drawMap(tifton, "tifton-map", "Tifton, GA");
drawMap(nlv, "nlv-map", "North Las Vegas, NV")
}
function drawMap(coords, div, title){
var opts = {
zoom: 8,
center: coords,
panControl: false,
zoomControl: false,
scaleControl: false,
scrollwheel: false,
draggable: false,
disableDoubleClickZoom: true
}; //generate map options for each individual map
var map = new google.maps.Map(document.getElementById(div), opts); //set the canvas that the map will be drawn to
var marker = new google.maps.Marker({
position: coords,
title: title
});
marker.setMap(map);
}
function updateCoords(callback){
navigator.geolocation.getCurrentPosition(function(position){
var pos = {
latitude: position.coords.latitude,
longitude: position.coords.longitude
};
callback(pos);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
编辑:为了回答将此问题标记为重复,我将添加更多细节。提供给我的问题的链接,对我来说没有任何帮助。它所做的只是重复迭代是异步和同步功能和过程对我而言。我不再需要了。
我正在寻找的是一种可以帮助我打破这个内部的反应
function updateCoords(callback){
navigator.geolocation.getCurrentPosition(function(position){
var pos = {
latitude: position.coords.latitude,
longitude: position.coords.longitude
};
if()
callback(pos);
});
}
以及为什么这个
updateCoords(function(point){
if(point){
start = [ point.latitude, point.longitude];
}
});
完全没有在我在本问题的开头提供的示例代码中调用它的时间。我知道函数" updateCoords'是异步的,我不需要再向我重复。我读到了与我有关的问题的全部回复,并且它再次没有给我提供任何新信息。所以总结一下我的问题和我的大部分挫折感:
答案 0 :(得分:0)
地理定位功能是异步的。您需要在回调函数中使用结果。
function initialize(){
pj = new google.maps.LatLng(41.048899, -95.822685); //map for pacific junction
tifton = new google.maps.LatLng(31.417032, -83.498785); //map for tifton
nlv = new google.maps.LatLng(36.228928, -115.112426); //map for north las vegas
//set the directions for the user
updateCoords(function(point){
if(point){
start = point.latitude;
alert(start); //it will not stop showing default as the result
}
});