【发布时间】:2011-03-14 09:21:26
【问题描述】:
我只需要在谷歌地图中显示一个国家。我只需要显示一个国家,其他国家的部分不应该在那里。例如,如果我想显示英国,它应该只显示英国和周围的海域,其他国家的部分不应该是可见的。
是否有 Google API 调用或任何其他方法?除了覆盖缩放和覆盖它们可以在区域上导航的方法(滚动事件)之外,我找不到其他方法。
有人知道这样做的方法吗?
【问题讨论】:
标签: google-maps
我只需要在谷歌地图中显示一个国家。我只需要显示一个国家,其他国家的部分不应该在那里。例如,如果我想显示英国,它应该只显示英国和周围的海域,其他国家的部分不应该是可见的。
是否有 Google API 调用或任何其他方法?除了覆盖缩放和覆盖它们可以在区域上导航的方法(滚动事件)之外,我找不到其他方法。
有人知道这样做的方法吗?
【问题讨论】:
标签: google-maps
如果禁用所有地图元素,然后添加新图层(单个国家/地区),则只有一个国家/地区可见。这是一个 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" }
]
}
]
};
【讨论】:
我一直在寻找同样的东西,最终使用了多边形叠加。
相关代码在“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');
【讨论】:
我也有类似需求,找了好久才找到这个
<style>
#visualization svg path[fill^='none'] {
stroke-width: 0px;
}
</style>
[注意:#visualization 是我们渲染图形的标签的 id。]
它基本上是减少其他国家的笔画宽度,也不要忘记放这个
var options = {
...,
...,
datalessRegionColor: 'transparent',
...,
...
};
在可视化的选项部分。
【讨论】: