将xamarin用于当前位置currentLocation example 我使用上面的链接获取当前位置的纬度和经度 在升级到IOS 8之前的IOS 7中它在模拟器和设备上显示我当前位置的纬度和经度。(在模拟器中看起来很奇怪我获取当前位置的纬度和经度)。
升级到iOS 8并运行相同的代码后,它会给出
在模拟器中:(始终打开wifi无SIM卡位置服务应用程序。)
Result:
latitude = 37.785834.
longitude = -122.406517.
在设备IPhone5c上(始终打开wifi无SIM卡位置服务应用程序。)
Result:
latitude = 37.785834.
longitude = -122.406517.
(但我预计我当前的位置纬度和经度)
升级后它没有问,该应用程序就像使用你的当前位置GPS。带有YES,NO选项的警报消息。
如何获取当前位置的纬度和经度?
答案 0 :(得分:6)
您需要从iOS 8.0开始明确请求权限。这样做的步骤:
必须在plist文件中包含这些键中的任何一个,否则将不会显示权限请求!如果您不想在alertview中显示自定义说明文本,请将键的值字符串保留为空,但仍必须在Info.plist文件中显示该键!
在开始跟踪之前,检查您是否在iOS8上,然后从CLLocationManager实例发送RequestAlwaysAuthorization或RequestWhenInUseAuthorization。例如:
var locationManager = new CLLocationManager();
if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
locationManager.RequestAlwaysAuthorization();
}
在这种情况下,请使用Info.plist文件中的NSLocationAlwaysUsageDescription键。请注意,Xamarin Studio目前不会从下拉列表中自动为您提供此密钥,您必须在此处手动输入/复制粘贴此密钥。
答案 1 :(得分:0)
在方法LocationManager
if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
this.locMgr.RequestAlwaysAuthorization();
}
更改后
public LocationManager ()
{
this.locMgr = new CLLocationManager();
LocationUpdated += PrintLocation;
if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
this.locMgr.RequestAlwaysAuthorization();
}
}
手动添加信息Plist NSLocationAlwaysUsageDescription空字符串。
然后清理构建并运行应用程序。它显示了我当前的位置纬度和longtidu。
答案 2 :(得分:0)
我尝试了以上解决方案但是没有用。问题是当您定位IOS> = 9.0时,位置管理器会更改一些权限变量,这些变量应该在info.pList中明确提及。
<key>NSLocationWhenInUseUsageDescription</key>
<string>Why you need Location</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Why you need Location</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Why you need Location</string>
<key>NSLocationWhileInUsage</key>
<string>Why you need Location</string>
如果要在9.0之前和之后定位所有版本,请使用这四个键。
另请注意,此行表示用户是处于前台还是后台使用位置(苹果不鼓励这样做,因为它具有隐私权)check documentation here
[locationManager requestAlwaysAuthorization];
而这意味着,
[locationManager requestWhenInUseAuthorization];
仅在应用处于前台check documentation here
时使用答案 3 :(得分:0)
使用iOS模拟器时,您需要设置模拟器硬件的自定义位置。转到“调试”,选择位置,自定义位置,然后设置首选坐标。