【问题标题】:Default center on United States?美国的默认中心?
【发布时间】:2012-12-09 07:12:44
【问题描述】:

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

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

是否可以将默认中心焦点放在整个美国?我在任何地方都找不到这个。

【问题讨论】:

  • @KenWhite 如果你把它作为答案,我会接受
  • 已完成,原始答案已得到认可。

标签: google-maps google-maps-api-3


【解决方案1】:

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

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

jsfiddle example

【讨论】:

  • @TalasanNicholson 确实如此,添加了 jsfiddle 示例来证明这一点。
【解决方案2】:

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);

【讨论】:

    【解决方案3】:

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

    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);
    

    【讨论】:

      【解决方案4】:

      以芝加哥为中心,然后更改zoom

      有一个example here。稍作修改的版本(未经测试!):

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

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

      【讨论】:

      • 这是有道理的,但是使用 geocodezip 建议的视口会更好:)
      • 美国毗连的地理中心是美国48个州的中心。自 1912 年新墨西哥州和亚利桑那州加入美国以来,美国国家大地测量局 (NGS) 一直认为它是这样的。
      • 更准确的是黎巴嫩,堪萨斯州:[39.809734, -98.555620]
      【解决方案5】:

      一种选择是使用地理编码器。如果你geocode "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 }
      }
      

      fiddle

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

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

      这是一个example that uses the geocode to zoom to countries from a drop down list,(它使用边界,而不是视口,这对于美国来说是不同的)

      【讨论】:

        【解决方案6】:

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

        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);
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-08
          • 1970-01-01
          • 2018-04-05
          • 1970-01-01
          相关资源
          最近更新 更多