我是JavaScript新手,我目前正在使用传单构建一个简单的地图应用程序。
我遇到了应用程序的问题,我无法顺序调用两个函数(可能是因为我缺乏JS知识)。
我有两个功能。一个将返回当前位置,另一个将使用此位置lat,lon作为输入来创建地图:
/* Return a position object*/
function getMyLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
return position;
});
}
else {
alert("Please turn on location services");
}
}
/* Create a map and place a marker at the given lat,lon */
function createMap(lat,lon) {
var mymap = L.map('map', {zoomControl: false}).setView([lat, lon], 17);
L.tileLayer('https://api.mapbox.com/styles/v1/mapbox/outdoors-v9/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1IjoiZG9uc2Nvc2hhIi...', {
maxZoom: 20
}).addTo(mymap);
L.marker([lat, lon]).addTo(mymap);
}
在文档就绪功能中调用这些函数:
$(document).ready(function () {
var pos = getMyLocation();
createMap(pos.coords.latitude,pos.coords.longitude);
});
然而,问题是在设置pos变量之前调用createMap(),这意味着它传递了两个未定义的lat和long,因此地图不会渲染。
在JavaScript中解决此类问题的正确方法是什么?我看了许诺,但不确定我是否在正确的路线上。或者,我可以从getMyLocation内部调用createMap(),但我认为这是一个更好的解决方案。