1

新しい Windows Phone 8 Maps と Maps Toolkit を使用しています。PositionChangedイベントごとUserLocationMarkerに、 を新しい位置に設定しました。ユーザーが をタップするUserLocationMarkerと、マップの場所が表示ReverseGeocodeQueryされ、ユーザーの場所の画鋲が表示されるように設定されます。これを非常に迅速に行うためReverseGeocodeQueryに、PositionChangedイベント内で を実行します。

私の質問は、ユーザーの場所が非常に迅速に変更された場合、多くReverseGeocodeQueryの s が実行されるということです。これはパフォーマンスの問題ですか?

private void InitializeGeolocator()
{
    geolocator = new Geolocator();
    geolocator.DesiredAccuracy = PositionAccuracy.High;
    geolocator.MovementThreshold = 5;
    geolocator.StatusChanged += geolocator_StatusChanged;
    geolocator.PositionChanged += geolocator_PositionChanged;
}

private void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
{
    Dispatcher.BeginInvoke(() =>
    {
        Geoposition geoposition = args.Position;

        this.UserLocationMarker.GeoCoordinate = geoposition.Coordinate.ToGeoCoordinate();
        this.UserLocationMarker.Visibility = System.Windows.Visibility.Visible;

        // execute ReverseGeocodeQuery...
        // set Pushpin
    });
}

private void userLocationMarker_tap(object sender, GestureEventArgs e)
{
    // show user location pushpin...
    UserLocationPushpin.Visibility = Visibility.Visible;
}
4

1 に答える 1

1

ReverseGeocodeQueryイベント内で が呼び出された場合PositionChanged、はい、パフォーマンスの問題が発生する可能性があります。

原則として、Windows Phone (および Windows 8 / WinRT) での非同期呼び出しは、通常、一定時間内に値を返さない可能性があることを意味します。50 ミリ秒かかる場合もあれば、5 秒かかる場合もあります。

を使用ReverseGeocodeQueryして、Nokia のサーバー (geo.nlp.nokia.com) にネットワーク呼び出しを行い、アドレスを取得します。この通話は、Wifi または良好な 3G 接続を使用している場合は非常に迅速に返されますが、受信状況が悪い場合は当てはまりません。

また、あなたが何をしようとしているのかは理解できますが、事前にアドレスを調べて、ユーザーが をタップしたときにUserLocationMarkerすぐにアドレスが表示されるようにします。ネットワークの品質が悪いと、遅延や例外が発生する可能性があります。

私の提案は、組み込みの Maps アプリが既に使用しているアプローチに従うことです。つまり、ユーザーが をタップするとUserLocationMarker、「Looking...」というラベルが表示され、非同期アドレス ルックアップが実行され、そのラベルがアドレスで更新されます。

また、ReverseGeocodeQuery がレート制限されているかどうかもわかりません。そうではないようですが、Google の Geocoding API など、他のほとんどのサービスと同様に、将来変更される可能性があります。

何をするにしても、テスト用の便利なツールは...

  1. Fiddler (および WP8 エミュレーターで Fiddler を使用する方法)
  2. Windows Phone のシミュレーション ダッシュボード(悪いネットワーク状態などをシミュレート)
于 2013-03-04T16:42:45.373 に答える