在我的 ionic 应用程序中,我正在尝试使用谷歌地图。当我使用下面的代码时,它确实在我的页面上显示了 map 。
let latLng = new google.maps.LatLng(-34.9290, 138.6010);
let mapOptions = {
center: latLng,
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions);
但是当我使用下面的代码时,我得到了
Geolocation has been disabled in this document by Feature Policy
error.
this.geolocation.getCurrentPosition().then((position) => {
let latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
let mapOptions = {
center: latLng,
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions);
}, (err) => {
console.log(err);
});
最佳答案
看看这个: https://github.com/apache/cordova-plugin-geolocation#ios-quirks ,也许它也能帮到你。
我使用的是 OpenStreetMap(不是 Google map ),但出现的问题是相同的,它必须存在于您的 *-Info.plist 中(如果是 iOS),因此为此,您必须添加config.xml(cordova 项目)中的以下几行:
<edit-config file="*-Info.plist" mode="merge" target="NSLocationWhenInUseUsageDescription">
<string>We want your location! Best regards NSA</string>
</edit-config>
您还可以检查这个地理定位插件 https://ionicframework.com/docs/native/geolocation/ ,因为它可以与谷歌地图或 OpenStreetMap 一起使用,但是......这不会改变你必须添加一些信息(消息)让手机用户知道你的应用程序为什么(以及何时)需要访问权限的事实用户的位置。
另一件事......然而......它不适用于命令组合:
ionic serve --lab -c
问题会一直存在,我仍然没有找到是否有办法解决这个问题。 但是上面的解决方案应该可以解决使用模拟器或设备本身的问题。 (当然,不带--lab选项,即在桌面浏览器测试模式下,也不存在这个问题)
另一种测试(修改 config.xml 后)运行情况的方法是使用 Ionic Dev App(iOs 或 Android),它可以直接在 iPhone 上进行测试,例如实例。
希望对你有所帮助。
关于javascript - 功能策略已在本文档中禁用地理定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51717856/