我的问题与这个问题相同:geocoding address into coordinates
唯一的区别是我需要用单点触控(C#),而不是Objective-C。
到目前为止,我已经尝试过了,但没有成功:
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;这一行并没有构建。我在理解如何获取视图对象时遇到了问题。
发布于 2012-11-29 21:27:29
这样它就可以工作了:
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 ();
}
}https://stackoverflow.com/questions/13026440
复制相似问题