2017-09-11 39 views
0

我正在關注在Xamarin中將多邊形添加到地圖上的this教程。我目前正在實現本教程的iOS部分,但是因爲我想要將多個多邊形添加到我的地圖中,而不是本教程中顯示的單個多邊形,所以我使用addOverlays()函數,該函數接受一組IMKOverlay對象,而不是addOverlay()功能需要1 IMKOverlay對象。Xamarin iOS - AddOverlays()僅添加第一個多邊形

由於某種原因,我所有的多邊形都被繪製在與我的列表中的第一個多邊形相同的座標處,類似於問題this人有!

這裏是我的代碼:

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

你有MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper)這是在tutorial編輯代碼。剛剛在if語句刪除if陳述或刪除polygonRenderer == null &&,就像這樣:

 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

Hi @Barney Chambers,我的回答對你有幫助嗎? –