如何在Google地图中移动标记?

时间:2013-09-09 14:33:08

标签: google-maps google-maps-api-3 google-maps-markers geocoding

我想自动将标记移动到x公里。

这是我的代码:

geocoder.geocode({'address': address}, function(results, status) {

    if (status == google.maps.GeocoderStatus.OK) {

        var myMap = new google.maps.LatLng(-34.397, 150.644);
        var myOptions = {
            zoom: 11,
            center: myMap,
            scrollwheel: false,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var map = new google.maps.Map(document.getElementById("show_map"), myOptions);
        map.setCenter(results[0].geometry.location);

        var marker = new google.maps.Marker({
            position: results[0].geometry.location,
            flat: false,
            map: map
        });

    }
}

我该怎么做?

谢谢。

3 个答案:

答案 0 :(得分:5)

只需移动您的标记:

function moveMarker( map, marker ) {

    marker.setPosition( new google.maps.LatLng( Lat, Lng) );
    map.panTo( new google.maps.LatLng( Lat, Lng) );

};

答案 1 :(得分:1)

如果要在聚合后移动标记:

var marker = new google.maps.Marker({
        position: results[0].geometry.location,
        flat: false,
        map: map,
        draggable: true
    });

错过一个参数“draggable”并设置为TRUE,默认为FALSE。

答案 2 :(得分:1)

我终于找到了解决方案。 我没有使用地址中的反向地理编码,而是在数据库中获取坐标并按照以下方式应用它们:

var coordinates_str, actual_lat, actual_lng, adjusted_lat, adjusted_lng;

actual_lat = adjusted_lat = '<?php echo $lat ?>';
actual_lng = adjusted_lng = '<?php echo $lng ?>';

adjusted_lat = parseFloat(actual_lat) + (Math.random() -.5) / 25;
adjusted_lng = parseFloat(actual_lng) + (Math.random() -.5) / 25;
coordinates_str = String(adjusted_lat) + String(adjusted_lng);

var coordonnees = new google.maps.LatLng(adjusted_lat, adjusted_lng);

var centerMap = new google.maps.LatLng(adjusted_lat, adjusted_lng);

感谢您的帮助。