bugfix> c# > 投稿

以下のフォーラムの1つから取得したコードは、クライアントコンピューター(ユーザー)の緯度と経度を取得しようとしています。
しかし、それは私に未知の場所を返しています。
これを追加または変更する必要がありましたか。

public string GetUserLocation()
{
    string coords = "";
    GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
    watcher.Start(); 
    GeoCoordinate coord = watcher.Position.Location;
    if (!watcher.Position.Location.IsUnknown)
    {
        double lat = coord.Latitude;
        double longi = coord.Longitude;  
        coords = lat + "," + longi;
    }
    else
    {
        return coords="Unknown latitude and longitude.";
    }
    return coords;
}

回答 1 件
  • watcher.TryStart を試しましたか  ウォッチャーが正しく初期化されているかどうかを確認するには?

    bool started = watcher.TryStart(false, TimeSpan.FromMilliseconds(2000));
    if (!started)
    {
       Console.WriteLine("GeoCoordinateWatcher timed out on start.");
    }
    
    

    GeoCoordinateWatcherのステータスと権限も確認してください

    The Status property can be checked to determine if data is available. If data is available, you can get the location one time from the Position property, or receive continuous location updates by handling the PositionChanged event.

    The Permission, Status, and Position properties support INotifyPropertyChanged, so that an application can data-bind to these properties.

    これは、許可を確認する方法です。

    if (watcher.Permission == GeoPositionPermission.Granted)
    {
       // you have permission... 
    }
    
    

    ステータスの確認については、こちらをご覧ください。

あなたの答え