2011-05-27 62 views
33

我正在使用Google地图V3显示使用MYsql和PHP从数据库中提取的标记列表。 MY标记使用的是完整的地址在地图上设置的(DB,包括邮编),因为我没有龙,纬度信息 所有工作正常,我的循环看起来遵循Google地图V3将中心设置为特定标记

while... 
Addmarker(map,'MY ADdress','Title'); 
end while; 

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

回答

49

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

// "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 

信息窗口为通常绑定到一个标记单独的对象,所以要打开你可能会做这样的事情(但是这将取决于您的代码)信息窗口:

var infoWindow = marker.infoWindow; // retrieve the InfoWindow object 
infoWindow.open(map); // Trigger the "open()" method 

希望这有助于。

+0

THX,请不要离开这个给我,因为我不是在谷歌地图,有信心的。我如何定位特定标记? – salocin 2011-05-27 10:12:16

+0

帮助请???? – salocin 2011-05-27 10:48:02

+0

在while ... end循环中的“Addmarker”函数中,您应该使用Google Maps API构建标记对象。您可能需要将每个标记(或者只是希望使用的标记)分配给一个数组,以便可以访问它们。如果您需要更多的帮助建立标记并将它们添加到地图中,我会建议您关闭此问题并创建一个更具体的帮助您需要的新问题。 – 6twenty 2011-05-27 13:54:43

31

要建立在@ 6twenty的答案...我更喜欢panTo(LatLng)over 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 
}); 
+3

为'panTo'方法+1 :) – 2013-07-09 07:37:06

+0

谢谢,这对我很有用。还有另一个函数'panBy',这将帮助你以给定的像素距离改变地图的中心。 :) – 2017-07-19 13:55:21

1

可能,这将帮助:

map.setCenter(window.markersArray[2].getPosition()); 

所有标记信息都在markersArray阵列,它是全球性的。所以你可以使用window.variablename从任何地方访问它。每个标记都有一个唯一的ID,你可以将该ID放入数组的键中。所以你创建这样的标记:

window.markersArray[2] = new google.maps.Marker({ 
      position: new google.maps.LatLng(23.81927, 90.362349),   
      map: map, 
      title: 'your info ' 
     }); 

希望这会有所帮助。

0
geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location 
     }); 
    } else { 
     alert('Geocode was not successful for the following reason: ' + status); 
    } 
    }); 
9

这应该是诀窍!

google.maps.event.trigger(map, "resize"); 
map.panTo(marker.getPosition()); 
map.setZoom(14); 

你需要有自己的地图全球

相关问题