2013-02-21 53 views
2

我正在使用適用於Android的Google地圖V2,並且需要在整個地圖上繪製多邊形,然後在選定的城鎮中添加一個洞。根據一些選項,這樣做的目的是突出地圖的特定區域。在整個地圖上繪製多邊形

我試圖繪製整個地圖的多邊形具有以下範圍:

Arrays.asList(new LatLng(90, -180), 
    new LatLng(-90, -180), 
    new LatLng(-90, 180), 
    new LatLng(90, 180), 
    new LatLng(90, -180)); 

但多邊形不會被抽入地圖。我嘗試將邊界縮小到更小的區域,並且多邊形沒有出現問題。

如何用多邊形覆蓋整個地圖?

回答

-1

閱讀PolygonOptions,我想你應該能夠做到這一點:

List points = Arrays.asList(new LatLng(90, -180), 
    new LatLng(-90, -180), 
    new LatLng(-90, 180), 
    new LatLng(90, 180), 
    new LatLng(90, 180)); 
PolygonOptions options = new PolygonOptions(); 
options.addAll(points) 
options.fillColor(#80FF0000); // 50% opacity red, for example 
map.addPolygon(options); 

你必須指定填充顏色,如果你沒有做到這一點。 如果你沒有,對不起,但我不能猜你還沒有發佈的代碼:)

+0

我沒有指定填充顏色的嘗試,而這正是我試過的代碼,甚至中風,看看發生了什麼。它不會用多邊形填充地圖,而是繪製一條線:http://imgur.com/0YqRb37。這條線在澳大利亞附近繼續下去:) – rfsbraz 2013-02-21 20:48:41

+0

也許這是關於地圖API v2多邊形的一些奇怪行爲。如果沒有任何線條穿過屏幕,也許它不會呈現。如果您的目標是遮擋地圖,您可以嘗試使用TileOverlay :) – 2013-02-21 20:59:19

+0

這隻能畫出一條細線。 – lostintranslation 2014-07-01 17:31:16

4

我一起工作:

float delta = 0.1f; 

List points = Arrays.asList(new LatLng(90, -180), 

new LatLng(-90+delta, -180+delta), 

new LatLng(-90+delta, 0), 

new LatLng(-90+delta, 180-delta), 

new LatLng(0, 180-delta), 

new LatLng(90-delta, 180-delta), 

new LatLng(90-delta, 0), 

new LatLng(90-delta, -180+delta), 

new LatLng(0,-180+delta)); 

PolygonOptions options = new PolygonOptions(); 

options.addAll(points); 

options.fillColor(R.color.red_half_alpha); // 50% opacity red, for example #80FF0000 

map.addPolygon(options); 

我希望你看到這個代碼是怎麼回事。它適用於Android v2地圖。

我認爲浮點計算有一些問題。另一點是,如果你看起來在俄羅斯和美國之間非常乖巧(例如LatLng(0,180),LatLng(0,-180)),你很可能會看到一條非常細的線。

這是你的多邊形。 PS:如果你在地圖上看到空洞,請提供一個簡短的介紹,它是如何爲你制定的。我想很多人都有同樣的問題。

0

在使用這一個

  new PolygonOptions() 
     .add(new LatLng(85,90), new LatLng(85,0.1), 
      new LatLng(85,-90), new LatLng(85,-179.9), 
      new LatLng(0,-179.9), new LatLng(-85,-179.9), 
      new LatLng(-85,-90), new LatLng(-85,0.1), 
      new LatLng(-85,90), new LatLng(-85,179.9), 
      new LatLng(0,179.9), new LatLng(85,179.9))