2016-05-07 13 views
0

ポイント座標で作成したGMSPolygonがあり、マップビューと統合する必要があります。ただし、マップはmkMapViewです。GMSPolygonをMKMapViewで使用することはできますか?

私はクラスタ化されたピンなどを使用していますので、私はマップ上で行った作業を保ちたいと思いますが、今は必要な他の機能で問題を引き起こしています。次のように

コードがある(mainMapViewがmkMapViewある)

let rectangle = GMSPolygon(path: path) 
rectangle.map = GMSMapView(mainMapView) 
rectangle.fillColor = UIColor(red:0, green:0, blue:0.3, alpha:0.5) 

mkMapViewでGMSPolygonを結合する方法はありますか?

ありがとうございました。

EDIT:「パス」はGMSMutablePathであり、それが暗示されていないと指摘しておきます。

答えて

1

必ず、何も既製なく、カスタム・ブリッジは

  1. あなたはクラスMyPolygonOverlayを書く迅速に行うことができません。 MKOverlayに準拠しています。 GMSPolygonで初期化できること。
  2. これを割り当ててgmspolygonに渡し、addOverlay
  3. と入力して、クラスMyPolygonOverlayRendererを書きます。 MyPolygonOverlay(またはむしろGMSポリゴン)を描画することができます。あなたのmkmapview委譲がMyPolygonOverlayRendererため、このrendererForOverlay方法

でノートを提供する必要があり、あなたはMKPathOverlayRendererを継承し、CGPathに多分:)

HFにGMSPathを変換し、質問の場合には元に戻すこと自由に感じることができる

+0

多くの方に感謝します。これは私の頭の上に少しですが、それを確認するために働いています。 – RobertyBob

+0

mapkitは、ビューに追加するアノテーションまたはオーバーレイ(データのみ)と、対応するビューまたはレンダラー(データを視覚的に表します)を半分に分割します。 –

+1

私を正しい方向に向けるためにアップアップされました。実際の解決方法は以下のとおりです。どうもありがとう。 – RobertyBob

1

Daij-Djanのおかげで、次のようにMKPolygonを構築することができました。

var mkPoints = [CLLocationCoordinate2D]() 

次にポイントを配列に追加します。

let c = CLLocationCoordinate2DMake(pointInCoord.latitude, pointInCoord.longitude) 
mkPoints.append(c) 

MKPolygonを追加します。

let polygon = MKPolygon(coordinates: &mkPoints, count: mkPoints.count) 
mainMapView.addOverlay(polygon) 

次に、レンダラーを追加します。

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { 
    let pr = MKPolygonRenderer(overlay: overlay) 
    pr.fillColor = UIColor(red: 51/255, green: 204/255, blue: 255, alpha:0.5) 
    return pr 
} 
関連する問題