谷歌地图设置新的标记位置和panTo

时间:2014-03-28 11:24:26

标签: javascript google-maps google-maps-markers

我正在尝试修改现有主题的js,以便能够在地图上显示不同的位置。 这是原始代码:

function initialize() {
    var map;
    var brooklyn = new google.maps.LatLng(parseFloat("<?php echo $coordinates[0]; ?>"), parseFloat("<?php echo $coordinates[1]; ?>"));
    var stylez = [{
        featureType: "all",
        elementType: "all",
        stylers: [{
                saturation: -100
            } // <-- THIS
        ]
    }];

    var mapOptions = {
        zoom: parseInt("<?php the_field("google_map_zoom_level"); ?>"),
        center: brooklyn,
        mapTypeControlOptions: {
            mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'tehgrayz']
        }
    };

    map = new google.maps.Map(document.getElementById("map"), mapOptions);

    var mapType = new google.maps.StyledMapType(stylez, {
        name: "Grayscale"
    });
    map.mapTypes.set('tehgrayz', mapType);
    map.setMapTypeId('tehgrayz');
    marker = new google.maps.Marker({
        title: "<?php echo $map["
        address "]; ?>",
        position: new google.maps.LatLng(parseFloat("<?php echo $coordinates[0]; ?>"), parseFloat("<?php echo $coordinates[1]; ?>")),
        map: map
    });
}
initialize();
 //google.maps.event.addDomListener(window, 'load', initialize);
}

我还设法使用各种教程来创建一个将标记移动到新位置的函数。

function changeMarkerPos(lat, lon){
    myLatLng = new google.maps.LatLng(lat, lon);
    marker.setPosition(myLatLng);
    map.panTo(myLatLng);
}

然而,尽管标记确实移动了,但地图并不像我想的那样居中。谁能帮我吗?我对js不太好,所以请保持简单......

感谢!!!

1 个答案:

答案 0 :(得分:2)

您需要全局声明地图变量。函数changeMarkerPos目前无法使用它。

var map;
function initialize() {
    var brooklyn = new googl............

编辑 - 这次没有任何区别。 setCenter()很有用,但不是你问题的答案。

本周早些时候我做了类似的事情并使用了map.setCenter();那怎么样:

function changeMarkerPos(lat, lon){
    myLatLng = new google.maps.LatLng(lat, lon);
    marker.setPosition(myLatLng);
    map.panTo(myLatLng); 
    map.setCenter(myLatLng);    
}