【问题标题】:Is there a way to display a single country in Google map? It should be only one country, not parts from other countries included [duplicate]有没有办法在谷歌地图中显示一个国家?它应该只有一个国家,而不是其他国家的部分[重复]
【发布时间】:2011-03-14 09:21:26
【问题描述】:

我只需要在谷歌地图中显示一个国家。我只需要显示一个国家,其他国家的部分不应该在那里。例如,如果我想显示英国,它应该只显示英国和周围的海域,其他国家的部分不应该是可见的。

是否有 Google API 调用或任何其他方法?除了覆盖缩放和覆盖它们可以在区域上导航的方法(滚动事件)之外,我找不到其他方法。

有人知道这样做的方法吗?

【问题讨论】:

    标签: google-maps


    【解决方案1】:

    如果禁用所有地图元素,然后添加新图层(单个国家/地区),则只有一个国家/地区可见。这是一个 jsfiddle https://jsfiddle.net/gvvy5vxz/2/

    function initialize() {
        var mapOptions = {
        zoom: 5,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        backgroundColor: '#FFF',
        disableDefaultUI: true,
        draggable: false,
        scaleControl: false,
        scrollwheel: false,
        styles: [
        {
        "featureType": "water",
        "elementType": "geometry",
        "stylers": [
          { "visibility": "off" }
        ]
        },{
        "featureType": "landscape",
        "stylers": [
          { "visibility": "off" }
        ]
        },{
        "featureType": "road",
        "stylers": [
          { "visibility": "off" }
        ]
        },{
        "featureType": "administrative",
        "stylers": [
          { "visibility": "off" }
        ]
        },{
        "featureType": "poi",
        "stylers": [
          { "visibility": "off" }
        ]
        },{
        "featureType": "administrative",
        "stylers": [
          { "visibility": "off" }
        ]
        },{
        "elementType": "labels",
        "stylers": [
          { "visibility": "off" }
        ]
        }
      ]
    };
    

    【讨论】:

    • 这是一个有趣的解决方案,但它需要一个单独的资源(在这种情况下,它需要一个您只想显示的国家/地区的地图图像)。再加上这并没有摆脱水。
    【解决方案2】:

    我一直在寻找同样的东西,最终使用了多边形叠加。

    相关代码在“here is the magic”注释下。

    一路缩小,你会看到巨大的白色方块。这是 json 文件中数组的第 0 个索引(链接在 map.data.loadGeoJson) "[[-147, 2], [-150, 70], [-20, 68], [-31, 5] , [-147, 2]]",下一个索引是你感兴趣的区域的边界坐标点。

    在 google 中搜索“kml {country/city/state/region name}”,您可能会找到所有带有边界轮廓点的数据。

    https://jsfiddle.net/jmao2o3o/3/

    //here is the magic
    map.data.loadGeoJson('https://bitbucket.org/dimaboychev/public/raw/9bb53aba0d70875a6d2d9bd2a1eec65671ce4ae3/dc.json');
    

    【讨论】:

    • 请注意,对于正方形,您有 5 个点,那是因为您必须连接到第一个点。 “[[-147, 2], [-150, 70], [-20, 68], [-31, 5], [-147, 2]]”。最后一点必须与第一点相匹配。
    • 所以你是说你在 google 中搜索了这个 kml 数据?你没有在某处生成它?试图做同样的事情,但只是展示加利福尼亚——找不到任何好的资源。感谢任何指针。
    • 这里可以找到加州边境KML数据文件,在mrdata.usgs.gov/geology/state/state.php?state=CA页面查找cageol.kml文件
    • 谢谢@dmitry 我将如何获取大纲并像您一样创建 JSON 文件?那么我只需要在您的示例中使用适当的坐标来更新它?
    • 是的,但这可能很棘手。看一看,这更接近您可能需要的 jsfiddle.net/jmao2o3o/25 我从 eric.clst.org/Stuff/USGeoJSON 获得了 json 格式的点,如果您需要更高的精度,请选择“5m”文件。我得到了 500k 文件,所以它没有那么多点。你现在需要做的是设置外层覆盖数组
    【解决方案3】:

    我也有类似需求,找了好久才找到这个

    <style>
            #visualization svg path[fill^='none'] {
                stroke-width: 0px;
            }
    </style>
    

    [注意:#visualization 是我们渲染图形的标签的 id。]

    它基本上是减少其他国家的笔画宽度,也不要忘记放这个

    var options = {
                    ...,
                    ...,
                    datalessRegionColor: 'transparent',
                    ...,
                    ...
                };
    

    在可视化的选项部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-03
      • 2013-07-20
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 2017-07-23
      相关资源
      最近更新 更多