1

我有一张带有我设置的中心的地图——当我要求地图返回中心时,它返回相同的值。然而,地图正在放大我目前唯一的图钉。

无论图钉在哪里,我都希望地图缩小到同一个地方。

背景:地图列出了一个国家的位置。目前只有一个,但我希望地图缩小以显示整个国家。

4

2 回答 2

2

您不能在谷歌地图的 setCenter 中指定国家,因为它将始终关注特定坐标。如果您希望缩放以一个国家为中心,您将拥有一个与 fitBounds 和LatLngBounds一起使用的国家边界数据库(作为坐标)。

这是使用边界的示例代码,其中 latLngList 应该是从一个国家/地区加载的坐标

var LatLngList = new Array (new google.maps.LatLng (52.537,-2.061), new google.maps.LatLng (52.564,-2.017));
//  Create a new viewpoint bound
var bounds = new google.maps.LatLngBounds ();
//  Go through each...
for (var i = 0, LtLgLen = LatLngList.length; i < LtLgLen; i++) {
  //  And increase the bounds to take this point
  bounds.extend (LatLngList[i]);
}
//  Fit these bounds to the map
map.fitBounds (bounds);

参考:缩放以适合所有标记

于 2013-08-16T09:05:18.183 回答
1

由于您没有共享任何代码,我猜您正在做这样的事情。

var bounds = new google.maps.LatLngBounds ();
bounds.extend (LATLNG);
map.fitBounds(bounds);

这会将所有点添加到边界并确保缩放级别可以容纳所有点。在您的情况下,它会放大您拥有的唯一点。

如果您想放大一个国家但没有坐标,您可以使用地理编码获得它们;

var address = "India"; // THE COUNTRY / ADDRESS WILL COME HERE
var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        map.fitBounds(results[0].geometry.viewport);results[0].geometry.location,map: map,icon:getGoogleIcon('purple')});
      } else {
        alert(address + " not found");
      }
    });

它将为您提供的地址设置边界。

于 2013-08-16T11:08:38.450 回答