首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用MonoTouch GeoCoding地址

使用MonoTouch GeoCoding地址
EN

Stack Overflow用户
提问于 2012-10-23 16:36:01
回答 1查看 2.3K关注 0票数 0

我的问题与这个问题相同:geocoding address into coordinates

唯一的区别是我需要用单点触控(C#),而不是Objective-C。

到目前为止,我已经尝试过了,但没有成功:

代码语言:javascript
运行
复制
string sw = searchWhere.Text;  
CLGeocoder clg = new CLGeocoder();  
clg.GeocodeAddress(sw, HandleCLGeocodeCompletionHandler);

编辑:调用了CompletionHandler,但我不知道如何显示新的地图应用程序。(我对iOS开发非常陌生。)

代码语言:javascript
运行
复制
    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;这一行并没有构建。我在理解如何获取视图对象时遇到了问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-29 21:27:29

这样它就可以工作了:

代码语言:javascript
运行
复制
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 ();
        }

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13026440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档