使用变量外部函数不会工作

时间:2014-05-26 20:39:53

标签: javascript google-maps

我想提醒其他功能中的curlat变量,以便我可以在谷歌地图中使用它 特征。但我无法让它发挥作用。

var getLocation = {
    init: function () {
        var curlat = "";

        function onSuccess(position) {
            curLat = position.coords.latitude;
        };   

        function onError(error) {
            alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
        }
        navigator.geolocation.getCurrentPosition(onSuccess, onError);
    }
}

var map = {
    init: function () {
        alert(curLat); // alert the cordinate here

        //Google maps API initialisation
        var element = document.getElementById("map");

        //Define the properties of the OSM map to be displayed 
        var map = new google.maps.Map(element, {
            center: new google.maps.LatLng(57, 21),
            zoom: 11,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            disableDefaultUI: true,
            mapTypeControl: false,
            streetViewControl: false
        });
        //Define OSM map type pointing at the OpenStreetMap tile server         
        map.mapTypes.set("OSM", new google.maps.ImageMapType({
            getTileUrl: function (coord, zoom) {
                return "http://tile.openstreetmap.org/" + zoom + "/" + coord.x + "/" + coord.y + ".png";
            },
            tileSize: new google.maps.Size(256, 256),
            name: "OpenStreetMap",
            maxZoom: 18
        }));
    }

}

1 个答案:

答案 0 :(得分:1)

首先,javascript区分大小写,因此curlat应为curLat

其次,将变量置于函数之外:

var curLat = "" ;

var getLocation = {       ...

另外,正如其他人正确指出的那样。您应该延迟map的初始化,直到设置curLat为止。也许你可以从.map.init处理程序中调用success