【问题标题】:Get current location and city name Xamarin.Android获取当前位置和城市名称 Xamarin.Android
【发布时间】:2016-07-29 11:47:15
【问题描述】:

我想使用 Xamarin.Android 获取当前位置和城市名称。我使用了此链接https://developer.xamarin.com/recipes/android/os_device_resources/gps/get_current_device_location/ 中的代码,但我只得到“纬度”和“经度”。也许我没有得到地址,因为我使用的是模拟器?

我想解决这个问题并使用最少的代码获取当前位置和地址(使用一些插件,api,也许......)

提前致谢:)

【问题讨论】:

    标签: android xamarin geolocation location


    【解决方案1】:

    Xamarin 有一篇很棒的技术文章,可以帮助您在 Android 上使用 Geocoder 完成整个过程。

    参考:https://developer.xamarin.com/recipes/android/os_device_resources/gps/get_current_device_location/

    执行经纬度到地址查找的代码是:

    async Task<Address> ReverseGeocodeCurrentLocation()
    {
        Geocoder geocoder = new Geocoder(this);
        IList<Address> addressList =
            await geocoder.GetFromLocationAsync(_currentLocation.Latitude, _currentLocation.Longitude, 10);
    
        Address address = addressList.FirstOrDefault();
        return address;
    }
    

    仅供参考:大多数模拟器都有一个用于模拟 LatitudeLongitude 的用户定义设置,因此您可以更改它并测试获得不同的响应。

    即在 Xamarin 的 Android Player 中,有一个 GPS 设置对话框:

    GenyMotion的Android Emulator等也有类似的设置...

    【讨论】:

    • 我在一个项目中使用 geolocator 插件,而另一个项目没有使用这个插件。我正在使用 Xamarin Android Player 模拟器部署这两个项目,我得到纬度和经度,但没有地址.. 也许我应该安装 Google Play Services 或其他东西.. ??提前致谢
    【解决方案2】:

    我想你可以看看 geocoder in android

     var addresses = await geo.GetFromLocationAsync (42.37419, -71.120639, 1);
    

    此配方创建一个 Geocoder 实例,该实例位于 Android.Locations 命名空间中。地理编码器使用纬度和经度调用 GetFromLocationAsync 来反向地理编码。这将异步执行网络调用,从而不会阻塞主 UI 线程。返回结果时,该方法将返回地址列表并在 UI 线程上继续。在此调用中返回 1 地址,因为这是传递给 GetFromLocationAsync 调用的第三个参数的数字。返回的地址包含有关位置的各种信息,包括街道地址。

    【讨论】:

    • 我在一个项目中使用地理定位器插件,而另一个项目没有使用这个插件。我正在使用 Xamarin Android Player 模拟器部署这两个项目,我得到纬度和经度,但没有地址.. 也许我应该安装 Google Play Services 或其他东西.. ??提前致谢
    猜你喜欢
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    相关资源
    最近更新 更多