2013-03-25 158 views
1

我想用Google map(版本1.1.1,最後一個)在iPhone上繪製填充多邊形。如何在Google Maps SDK中爲iOS繪製填充多邊形

任何人都知道該怎麼做像iOS上:

(我對Android的代碼)

mMap.addPolygon(new PolygonOptions() 
      .addAll(latLngList) 
      .fillColor(Color.BLUE) 
      .strokeColor(Color.RED) 
      .strokeWidth(3)); 

問候,

PS:如果你有很多的解決方案,請記住我有許多多邊形繪製。

回答

1

的SDK目前不支持填充多邊形,但是還有一個特點,要求他們在這裏補充一下:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=5070

在此期間,一個選擇是吸引你的多邊形成圖像,然後將它們添加爲地面覆蓋圖。這將是非常有限的,但可能作爲臨時解決方法。

另一種方法是在地圖視圖的頂部添加另一個視圖,並在其中繪製多邊形,然後在地圖視圖移動時更新它們。無法將其他視圖與地圖視圖完全同步,因此在平移/縮放時,多邊形會稍微滯後一點,但作爲臨時解決方法,這也可能適用於您。

UPDATE

這些都只是一些隨機的想法去嘗試地面疊加的方法,我不知道如果他們的工作,但他們可能讓你開始:

我建議轉換矩形的緯度/經度角變爲MKMapPoint(使用MKMapPointForCoordinate)。這些等效於谷歌的座標系,縮放等級20

然後,您可以使用MKMapPoint矩形的寬度/高度的縱橫比的座標,以確定您的地面疊加UIImage的縱橫比。一旦你有寬高比,你只需要嘗試實際的大小(即猜測一個寬度,根據長寬比計算高度)找到一個看起來沒問題的。它越大,矩形的細節就越精細,但會使用更多的內存,並且性能可能會越慢。此外,您可能會遇到某種尺寸的硬限制 - 我猜UIImage會被Google Maps SDK轉換爲紋理,並且紋理在iPhone 3GS +上的最大尺寸爲2048x2048。

然後,使用類似於How to setRegion with google maps sdk for iOS?的東西來計算縮放級別和中心緯度/經度。代替地圖視圖的寬度/高度,您可以使用寬度/高度,並使用矩形的邊界而不是所需視圖的邊界。你也不需要從寬度和高度來計算比例(因爲比例應該是相同的) - 所以就使用其中的一個。不要使用縮放級別和中心緯度/經度創建相機,請將它們設置爲GMSGroundOverlayOptions。同時將地面覆蓋圖anchor設置爲圖像中心(即0.5,0.5)。

上面介紹瞭如何爲每個矩形添加一個GroundOverlay。如果你有很多重疊或附近的矩形,你可以將它們組合成一個單一的UIImage,但這會更復雜一些。

+0

謝謝撒克遜,我已經在Google Map Circle發佈了你。 我已經用CGContextFillRect在UIImage中繪製了多邊形的解決方案,並且我正在測試許多groundedOverlay的渲染......當您認爲Google Maps for iOs團隊會使它成爲可能嗎? – 2013-03-26 08:17:58

+0

我遇到了這個問題:如果我想用精確的座標繪製一個groundedOverlay,如何知道給疊加圖像賦予哪個尺寸,以及選擇哪個縮放以精確匹配我的地圖? – 2013-03-26 09:24:13

+0

嗨,托馬斯,你的多邊形是什麼形式?他們是經緯度列表,他們是矩形還是一般不規則形狀?我不知道Google是否或何時會發布該功能請求。他們似乎在每月發佈一次(請參閱https://developers.google.com/maps/documentation/ios/releases),因此下個月可能會推出另一個版本,但我不知道他們可能會選擇什麼把它放進去。 – 2013-03-26 14:48:24