谷歌地图V3设置中心到特定的标记

sal*_*cin 41 google-maps google-maps-api-3

我正在使用Google Map V3显示从数据库中提取的标记列表,使用MYsql和PHP.MY标记在地图上使用完整地址(来自DB,包括邮政编码)设置,因为我没有Long,Lat信息所有工作正常,MY循环看起来如下

while...
Addmarker(map,'MY ADdress','Title');
end while;
Run Code Online (Sandbox Code Playgroud)

现在我想将地图设置为循环中包含的特定标记,该标记将与先前输入的邮政编码匹配.如何将地图设置为此标记的中心并打开infowindow?

6tw*_*nty 59

在地图上有标记后,您可以通过API检索Lat/Long坐标,并使用它来设置地图的中心.您首先需要确定您希望以哪个标记为中心 - 我会将其留给您.

// "marker" refers to the Marker object you wish to center on

var latLng = marker.getPosition(); // returns LatLng object
map.setCenter(latLng); // setCenter takes a LatLng object
Run Code Online (Sandbox Code Playgroud)

信息窗口是单独的对象,通常绑定到标记,因此要打开信息窗口,您可能会执行此类操作(但这取决于您的代码):

var infoWindow = marker.infoWindow; // retrieve the InfoWindow object
infoWindow.open(map); // Trigger the "open()" method
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Edd*_*die 39

在@ 6twenty的答案的基础上......我更喜欢panTo(LatLng)而不是setCenter(LatLng)作为panTo动画,以便更平滑地过渡到中心"如果变化小于地图的宽度和高度". https://developers.google.com/maps/documentation/javascript/reference#Map

以下使用Google Maps API v3.

var marker = new google.maps.Marker({
    position: new google.maps.LatLng(latitude, longitude),
    title: markerTitle,
    map: map,
});
google.maps.event.addListener(marker, 'click', function () {
    map.panTo(marker.getPosition());
    //map.setCenter(marker.getPosition()); // sets center without animation
});
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 17

这应该做的伎俩!

google.maps.event.trigger(map, "resize");
map.panTo(marker.getPosition());
map.setZoom(14);
Run Code Online (Sandbox Code Playgroud)

您需要全局地图