20

默认情况下,谷歌提供了这个如何在伊利诺伊州芝加哥居中地图的示例:

var chicago = new google.maps.LatLng(41.850033, -87.6500523);

是否可以让默认中心专注于整个美国?我在任何地方都找不到这个。

4

6 回答 6

17

以芝加哥为中心,然后将zoom.

这里有一个例子。略微修改的版本(未经测试!):

gMap = new google.maps.Map(document.getElementById('map')); 
gMap.setCenter(new google.maps.LatLng(41.850033, -87.6500523));
gMap.setZoom(ANewZoomLevel);

您需要尝试找到适合您需要的缩放级别。

于 2012-12-09T07:43:42.410 回答
17

使用美国本土地理中心:
黎巴嫩、堪萨斯。可能是地球上最无聊的地方。

http://www.kansastravel.org/geographicalcenter.htm

我发现3、4 或 5 的缩放是完美的。

gMap = new google.maps.Map(document.getElementById('map')); 
gMap.setCenter(new google.maps.LatLng(39.8097343, -98.5556199));
gMap.setZoom(3);
于 2017-04-24T00:19:00.250 回答
9

一种选择是使用地理编码器。如果您对 "United States of America" 进行地理编码,它会返回一个“建议的视口”,可用于居中和缩放地图:

"viewport": {
  "Z": {
    "b": 25.82,
    "d": 49.38
  },
  "ca": {
    "b": -124.38999999999999,
    "d": -66.94
  }
}

地理编码器返回的中心/位置是:37.09024, -95.712891

翻译为:

"viewport": {
  NorthEast: { lat:49.38, lng:-66.94 },
  SouthWest: { lat:25.82, lng:-124.39 }
}

小提琴

有两条相似的信息,边界和建议的视口。我相信边界包括阿拉斯加和夏威夷,视口可能更适合您的需求。

最简单的方法是手动将地图居中并按您喜欢的方式缩放,然后使用 getCenter() 和 getZoom() 获取当前值,然后使用这些值来初始化地图。

这是一个使用地理编码从下拉列表中缩放到国家/地区的示例,(它使用边界,而不是视口,这对于美国来说是不同的)

于 2012-12-09T08:08:44.093 回答
7

既然是整个美国,用 LatLng 进小数似乎很愚蠢。我喜欢:

new google.maps.Map($map, {
    center: new google.maps.LatLng(39, -95),
    zoom: 3
});

jsfiddle 示例

于 2014-04-28T12:58:43.287 回答
4

Fit bounds 效果最好,因为缩放取决于设备宽度。在一台设备上看起来不错的东西对于另一台设备来说太大或太小。因此:

var bounds = new google.maps.LatLngBounds(
  new google.maps.LatLng(25.82, -124.39),
  new google.maps.LatLng(49.38, -66.94)
);

map.fitBounds(bounds);
于 2015-02-21T21:20:55.037 回答
0

使用芝加哥不是很灵活。在美国的极端红衣主教处取点,本质上是创建一个边界框,然后将它们添加到边界对象并使用它来适应您的边界并在地图上缩放:

var bounds = new google.maps.LatLngBounds();
bounds.extend(new google.maps.LatLng(24.891752, -98.4375));
bounds.extend(new google.maps.LatLng(40.351289, -124.244385));
bounds.extend(new google.maps.LatLng(44.488196, -70.290656));
bounds.extend(new google.maps.LatLng(49.000282, -101.37085));
map.setCenter(bounds.getCenter());
map.fitBounds(bounds);

无论画布大小如何,这都适合您的地图。

于 2015-05-07T16:37:42.530 回答