Google Maps API v3,无法调用方法" panTo"未定义的

时间:2013-09-05 12:10:35

标签: javascript google-maps google-maps-api-3

我只想在地图上移动标记,并将变量mapmarker声明为全局,但我无法在函数moveMarker()中使用它。我是JavaScript的新手,所以这个问题可能很简单,但我仍然无法解决它 - 有人能帮我解决吗?

var map;
var marker;

function initialize() {
    var myLatLng = new google.maps.LatLng(50, 50),
        myOptions = {
            zoom: 4,
            center: myLatLng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        },
        map = new google.maps.Map(document.getElementById('map-canvas'), myOptions);
    marker = new google.maps.Marker({
        position: myLatLng,
        map: map,
        draggable: true
    });
    marker.setMap(map);
    setTimeout("moveMarker(1)", 2000);
}

function moveMarker(i) {
    //delayed so you can see it move
    if (i > 10) {
        return;
    }
    var myLatLng = new google.maps.LatLng(50 + 0.1 * i, 50 + 0.1 * i);
    marker.setPosition(myLatLng);
    map.panTo(myLatLng);
    var latlng = marker.getPosition();
    newlatlng = latlng.toString();
    marker.setTitle(newlatlng);
    setTimeout("moveMarker(" + (i + 1) + ")", 1500);
}

window.onload = function () {
    // Setup the dnd listeners.
    initialize();
};

2 个答案:

答案 0 :(得分:2)

您需要用“;”替换“,”,否则它会认为您正在重新定义变量“map”:

            var map;
        var marker;

        function initialize() {
            var myLatLng = new google.maps.LatLng(50, 50);
            myOptions = {
                zoom: 4,
                center: myLatLng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            map = new google.maps.Map(document.getElementById('map-canvas'), myOptions);
            marker = new google.maps.Marker({
                position: myLatLng,
                map: map,
                draggable: true
            });
            marker.setMap(map);
            setTimeout("moveMarker(1)", 2000);
        }

        function moveMarker(i) {
            //delayed so you can see it move
            if (i > 10) {
                return;
            }
            var myLatLng = new google.maps.LatLng(50 + 0.1 * i, 50 + 0.1 * i);
            marker.setPosition(myLatLng);
            map.panTo(myLatLng);
            var latlng = marker.getPosition();
            newlatlng = latlng.toString();
            marker.setTitle(newlatlng);
            setTimeout("moveMarker(" + (i + 1) + ")", 1500);
        }

        window.onload = function () {
            // Setup the dnd listeners.
            initialize();
        };

答案 1 :(得分:0)

问题不在谷歌地图的 PanTo 方法中。问题的原因是您的 myLatLng 变量。

因此,将 myLatLng 变量的范围更改为 Global ,问题将得到解决。

选中此JSFIddle