0

我只想在地图上移动标记,并将变量声明为全局变量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();
};
4

2 回答 2

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();
        };
于 2013-09-05T12:46:05.587 回答
0

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

所以将myLatLng变量的范围改为Global,问题就解决了。

检查这个JSFIddle

于 2013-09-05T12:46:55.283 回答