2010-05-11 176 views
19

是否有可能在GoogleMap中掩盖邻居国家?就我而言,我只想向瑞典展示一种观点。在第二个视图中,只有挪威,丹麦等等......我可以在GoogleMaps中显示一个国家(屏蔽掉)吗?

我知道可以绘制多边形线并将其填充到Maps API。问题是,或者结果集变大或者线条变得非常粗糙等等......如果GoogleMaps能够在没有邻居的情况下在当时提供一个国家,那会很好。

有没有人知道一个好的坐标数据库与国界?

回答

21

您可以创建在地图非常复杂的多边形,如果没有性能下降您将它们以KML文件格式存储并将它们加载为KmlLayers。 KML是地理数据的基于XML的矢量文件格式。在Google地图中使用KML文件的优点在于,无论原始多边形数据的复杂程度如何,它们都可以在Google服务器上呈现为简单的PNG文件,与当前的地图视图的分辨率和边界框匹配。所以所有的复杂性都在Google的服务器端处理。

这是一个sample of a project,我曾在德国的一个联邦州使用过这种遮罩。 (在这种情况下,周围的环境并没有被完全遮挡,而只是变暗,但您也可以通过更改KML文件中的填充颜色的Alpha值来轻松遮罩它们。)

快速查看KML文件也可以直接加载到Google Maps公共网站(通过在搜索字段中输入它们的URL)。以下是我在上述项目中使用的KML文件, loaded directly into Google Maps。 (我实际上在这里使用了一个KMZ文件,但这只是一个压缩成ZIP压缩文件的KML文件,你可以用普通的ZIP工具打包和解压缩它。)
BEGIN UPDATE 07/2015:不幸的是,谷歌已经取消了直接在他们的公开Goog​​le地图的搜索字段中输入KML/KMZ文件的网址,当他们在2014年推出其重新设计的版本时。您仍然可以使用本答案中讨论的所有技术,但是您不能通过在URL中输入他们的URL来预览KML文件搜索字段了。如果您需要上述KMZ进一步分析,您可以download it here。 END UPDATE

请注意,谷歌意味着KML/KMZ文件的大小限制(当前10 Mb未压缩,3 Mb压缩 - details see here)。如果您的KML文件应该很大,可以使用软件来降低复杂性(请参阅示例herehere)。

您可以在Internet上的许多地方找到免费的地图数据,其中大部分都是ESRI shapefile格式。国家地图的一个很好的来源是http://www.gadm.org/,它具有以KML/KMZ格式提供数据的巨大优势。如果您不得不将ESRI shapefile转换为KML,请查看伟大的(免费)OGR converter

请注意,如果您的多边形是静态的(比如瑞典的边框)并且不依赖于任何用户输入,KML文件只是一个解决方案。对于动态多边形,您仍然必须使用Maps API的Polygon类以及您提到的复杂性限制。

+0

嗨,伟大的答案,但KMZ链接断开。你是怎么设计出一个地标的,这样外面就被掩盖了 – wrecker 2015-07-29 13:22:36

+1

Hi @wrecker,你是对的,链接被打破了。我已更正该链接,但我发现在2014年推出新版本时,直接在公开Goog​​le地图的搜索字段中预览KML/KMZ文件的选项已被删除。您仍然可以使用此处讨论的所有技术,只会失去简单的预览选项。为了掩盖一个国家的外部,我为这个国家打了一个很大的圈子。下载我的KMZ(现在再次工作链接)并检查它。 – Jpsy 2015-07-30 09:12:35

4

也有类似的问题,并通过与gamps Fusion Tables的组合管理它:

var table_id = 420419; //can be exchanged wit another table 
var FT_Query = "SELECT 'kml_4326' FROM "+ table_id +" WHERE 'name_0' NOT EQUAL TO 'SWEDEN'"; 
var FT_Options = 
    { 
    suppressInfoWindows: true, 
    query: FT_Query 
    }; 
var layer = new google.maps.FusionTablesLayer(table_id, FT_Options); 
layer.setMap(map); 
相关问题