2012-10-23 39 views
0

我的問題是這一個的重複:geocoding address into coordinates
唯一的區別是我需要在Monotouch(C#)而不是Objective-C中執行此操作。使用MonoTouch對地址進行地理編碼

我已經試過這至今沒有成功:

string sw = searchWhere.Text; 
CLGeocoder clg = new CLGeocoder(); 
clg.GeocodeAddress(sw, HandleCLGeocodeCompletionHandler); 

編輯:CompletionHandler叫,但我不知道如何獲得新的地圖應用程式中顯示。 (我對iOS開發很新穎。)

MKMapView MapIt = new MKMapView(); 
    void HandleCLGeocodeCompletionHandler (CLPlacemark[] placemarks, NSError error) 
    { 

     List<ObjAnnotation> oal = new List<ObjAnnotation>(); 

     if (oal.Count > 0) 
     { 
      MapIt.RemoveAnnotations(oal.ToArray()); 
     } 
     oal.Clear(); 
     for(int i = 0; i < placemarks.Length; i++) 
     { 
      var loc = placemarks[i].Location.Coordinate; 
      oal.Add(new ObjAnnotation(new CLLocationCoordinate2D(loc.Latitude, loc.Longitude), 
             placemarks[i].Name, string.Empty)); 
     } 
     MapIt.AddAnnotationObjects(oal.ToArray()); 
     CustomerDetailTab cdt = CustomerDetailTab; 
     UIView view = cdt.View; 
     MapIt.AddSubview (view); 
    } 

雖然不會生成CustomerDetailTab cdt = CustomerDetailTab;行。我無法理解如何獲取視圖對象。

+0

是您的完成處理過叫什麼名字? – Jason

+0

是的,它被稱爲。 – callisto

+1

然後你需要更多地指定'不成功'。 –

回答

1

得到它的工作正是如此:

partial void btnAddr1Touch (MonoTouch.Foundation.NSObject sender) 
     { 

     short version = Convert.ToInt16(UIDevice.CurrentDevice.SystemVersion.Split('.')[0]); 
     string lmapLocation = Globals.SelectedCustomer.DelAddr01 + " " + Globals.SelectedCustomer.DelAddr02 + " " + Globals.SelectedCustomer.DelAddr03 + " " + Globals.SelectedCustomer.DelAddr04 + " " + Globals.SelectedCustomer.DelAddr05; 
     mapLocation= Globals.SelectedCustomer.DelAddr01 + Environment.NewLine + Globals.SelectedCustomer.DelAddr02 + Environment.NewLine + Globals.SelectedCustomer.DelAddr03 + Environment.NewLine + Globals.SelectedCustomer.DelAddr04 + Environment.NewLine + Globals.SelectedCustomer.DelAddr05; 


     if(mapLocation.Trim().Length == 0)return; 

     if (version == 5) 
     { 
      NSUrl url = new NSUrl("http://maps.google.com/maps?q=" + lmapLocation); 
      UIApplication.SharedApplication.OpenUrl(url); 
     }    
     else 
     { 
      ActivityThread.Start ("Loading Location"); 
      string sw = mapLocation; 
      CLGeocoder clg = new CLGeocoder(); 
      clg.GeocodeAddress(sw, HandleCLGeocodeCompletionHandler); 

     } 
    } 

void HandleCLGeocodeCompletionHandler (CLPlacemark[] placemarks, NSError error) 
     { 
      try 
      { 
       CLLocationCoordinate2D coordinate = placemarks [0].Location.Coordinate; 

      viewController = new MapViewController (coordinate, Globals.SelectedCustomer.Name, mapLocation); 

      ActivityThread.Stop(); 
      this.NavigationController.PushViewController (viewController, true); 
     } 
     catch (Exception ex) 
     { 
      ActivityThread.Stop(); 
      var erroralert = new UIAlertView ("Location could not be found", "", null, "Ok", null); 
      erroralert.Show(); 
     } 

    } 
相關問題