0

現在の緯度/経度を住所にリバース ジオコーディングするための非常に単純なテスト アプリを作成しました。

これが私のViewModelのコードです:

namespace LoginProductsMVVM.Core.ViewModels
{
    public class ProductDetailViewModel
        : MvxViewModel
    {
        public void Init(Product product)
        {
            Product = product;
        }

        private Product _product;
        public Product Product
        {
            get { return _product; }
            set { _product = value;
                RaisePropertyChanged (() => Product); }
        }

        private string _latitude;
        public string Latitude{
            get { return _latitude; }
            set { _latitude = value; RaisePropertyChanged(() => Latitude); }
        }

        private string _longitude;
        public string Longitude{
            get { return _longitude; }
            set { _longitude = value; RaisePropertyChanged(() => Longitude); }
        }

        private string _address;
        public string Address{
            get { return _address; }
            set { _address = value; RaisePropertyChanged(() => Address); }
        }

        private IMvxGeoLocationWatcher _watcher;
        public IMvxGeoLocationWatcher Watcher
        {
            get 
            {
                _watcher = Mvx.Resolve<IMvxGeoLocationWatcher> ();
                return _watcher;
            }
        }

        public ProductDetailViewModel(IMvxGeoLocationWatcher watcher)
        {
            _watcher = watcher;
            _watcher.Start (new MvxGeoLocationOptions (), OnLocation, OnError);
        }

        void OnLocation (MvxGeoLocation location)
        {
            Latitude = location.Coordinates.Latitude.ToString();
            Longitude = location.Coordinates.Longitude.ToString();

            // Android Location specific stuff
            var activity = Mvx.Resolve<IMvxAndroidCurrentTopActivity> ().Activity;
            Geocoder geocdr = new Geocoder (activity.BaseContext);

            IList<Address> addresses = geocdr.GetFromLocation (double.Parse(Latitude), double.Parse(Longitude), 1);

            addresses.ToList().ForEach ((addr) => Address += addr.ToString() + "\r\n\r\n");
        }

        void OnError (MvxLocationError error)
        {
            Mvx.Error ("Seen location error {0}", error);
        }
    }
}

OnLocation メソッドにブレーク ポイントがありますが、そこには入りません。これが Android で正しく動作するために何か不足していますか? iOSでは問題なく動作するようです...

4

2 に答える 2

1

ここのオダハンあたり

うーん... もう少し調査しました: この問題は既知であり、多くのデバイスで見られます。これは MvvmCross の問題ではありません。簡単な回答: デバイスを再起動する必要があり、すべてが魅力的に機能しています... Google が問題の原因となっているアップデートを送信したようです。この問題について話しているスレッドと、GeoCode クラスに関する同様のスレッドがあります。

https://code.google.com/p/android/issues/detail?id=38009

だから:閉じることができます、MvvmCrossは大丈夫ですが、他の人はこのバグに直面する可能性があるので、私の説明とリンクはこちらです。

于 2013-07-23T17:49:36.037 に答える