2010-05-11 179 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); 
相關問題