2017-09-11 22 views
0

私はXamarinのマップにポリゴンを追加するためのチュートリアルthisをフォローしています。私は現在このチュートリアルのiOSセクションを実装していますが、チュートリアルに示されている1つのポリゴンではなくマップに複数のポリゴンを追加したいので、IMKOverlayオブジェクトの配列を取るaddOverlays()関数を使用しています。 IMKOverlayを対象とする機能。addOverlay()Xamarin iOS - 最初のポリゴンを追加するだけのAddOverlays()

何らかの理由で、すべてのポリゴンが、リスト内の最初のポリゴンと同じ座標にプロットされています。これは、thisという人物と同じです!あなたはtutorialであるMKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper)でコードを編集する必要が

void addPolygonsToMap() 
     { 
      overlayList = new List<IMKOverlay>(); 
      for (int i = 0; i < polygons.Count; i++) 
      { 

        CLLocationCoordinate2D[] coords = new CLLocationCoordinate2D[polygons[i].Count]; 

        int index=0; 
        foreach (var position in polygons[i]) 
        { 
         coords[index] = new CLLocationCoordinate2D(position.Latitude, position.Longitude); 
         index++; 
        } 
        var blockOverlay = MKPolygon.FromCoordinates(coords); 
        overlayList.Add(blockOverlay); 

      } 
      IMKOverlay[] imko = overlayList.ToArray(); 
      nativeMap.AddOverlays(imko); 

     } 

答えて

0

は、ここに私のコードです。ただ、このように、if文でpolygonRenderer == null &&if文を削除するか、削除します。

 MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper) 
     { 

      if (!Equals(overlayWrapper, null)) 
      {   
       var overlay = Runtime.GetNSObject(overlayWrapper.Handle) as IMKOverlay; 
       polygonRenderer = new MKPolygonRenderer(overlay as MKPolygon) 
       { 
        FillColor = UIColor.Red, 
        StrokeColor = UIColor.Blue, 
        Alpha = 0.4f, 
        LineWidth = 9 

       }; 
      } 
      return polygonRenderer; 
     } 

そうでない場合、それは常にあなたの最初の座標グループを含む第一polygonRendererを返します。

+0

こんにちは@バーニーチェンバース、私の答えはあなたを助けましたか? –

関連する問題