【问题标题】:Country specific zoom level in Google Maps APIGoogle Maps API 中特定国家/地区的缩放级别
【发布时间】:2015-03-23 11:16:04
【问题描述】:

我正在尝试制作仅显示荷兰的 Google 地图。但是,当我使用 6 级缩放时,它也会显示比利时和德国,而当我使用 7 级缩放时,它会放大得太远,无法显示完整的国家/地区。

我怎样才能让荷兰只展示,而不是德国和比利时(或至少它们的一小部分)。

目前它看起来像这样:

【问题讨论】:

  • 缩放级别是整数值,您可能无法获得确切的大小(荷兰不是矩形)。你可以做类似this 的事情,制作一个倒置多边形,在荷兰上空有一个“洞”并覆盖世界其他地方。
  • 鉴于荷兰与比利时和德国接壤,如果您展示整个国家,您总是会展示他们(至少部分展示)。您可以随时调整地图 div 的宽度和高度,以便在缩放级别 6 时对其进行裁剪

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


【解决方案1】:
  1. 前往http://www.gadm.org/download,下载adm0 file for the Netherlands

  2. 将该多边形(作为内环)与覆盖整个地球的多边形组合

  3. 使用winding reversal tool 反转任何不与外环相对的内部多边形。

  4. 压缩生成的 kml,重命名为 kmz。使用geoxml3在地图上显示

代码:

function initialize() {
    var map = new google.maps.Map(
    document.getElementById("map_canvas"), {
        center: new google.maps.LatLng(85.4419, -122.1419),
        zoom: 13,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    var geocoder = new google.maps.Geocoder();
    var geoXml = new geoXML3.parser({
                    map: map,
                    zoom: false, 
                 });
    geoXml.parse("http://www.geocodezip.com/geoxml3_test/kmz/nld_adm0_inverted.kmz");
    google.maps.event.addListener(geoXml,'parsed', function() {
      geocoder.geocode( { 'address': "Netherlands"}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          map.fitBounds(results[0].geometry.viewport);
        } else {
          alert("Geocode was not successful for the following reason: " + status);
        }
      });    
    })
}
google.maps.event.addDomListener(window, "load", initialize);

Working example

要限制它始终显示在地图上,请参阅 this page 来自 Mike Williams' v2 tutorial

working example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2017-08-28
    • 2016-04-02
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多