使JavaScript函数按顺序执行的正确方法(顺序执行)

时间:2018-02-01 00:43:51

标签: javascript jquery leaflet

我是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(),但我认为这是一个更好的解决方案。

0 个答案:

没有答案
相关问题