0

私の質問はこれと同じです。住所を座標
にジオコーディングしますが、唯一の違いは、Objective-CではなくMonotouch(C#)で行う必要があることです。

私はこれまでこれを試しましたが成功しませんでした:

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

編集:CompletionHandlerが呼び出されましたが、新しいMapアプリを表示する方法がわかりません。(私は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;は構築されません。ビューオブジェクトを取得する方法を理解するのに問題があります。

4

1 に答える 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 ();
        }

    }
于 2012-11-29T13:27:28.890 に答える