【发布时间】:2019-11-13 23:17:26
【问题描述】:
我想在我的项目中使用谷歌地图。为此:
首先我安装和配置插件>> tns plugin add nativescript-google-maps-sdk这个插件对我很好。
第二个我想在谷歌地图中显示我的当前位置,为此我安装>> tns plugin add nativescript-geolocation
在AndroidMainfest.xml添加
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<supports-screens />
<uses-sdk />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application>
.......
</application>
</manifest>
在ts组件中
onMapReady(event) {
this.mapView = event.object;
this.ws.mobile_base_pharmacyGetAll().subscribe(
items => {
console.log(items)
this.items = items;
if (items !== undefined || items !== undefined) {
for (let i = 0; i < this.items.length; i++) {
var marker = new Marker();
marker.position = Position.positionFromLatLng(this.items[i].latitude, this.items[i].longitude);
marker.title = this.items[i].name;
marker.snippet = this.items[i].address1;
marker.userData = { index: 1 };
this.mapView.addMarker(marker);
this.mapView.myLocationEnabled = true;
}
}
},
err => console.error('err', err),
() => console.log('error')
);
}
Android 5.1.1 中的这段代码运行良好。在 Android 版本 7 及更高版本中不起作用。错误:
JS: ERROR 错误: java.lang.SecurityException: 我的位置需要 权限 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION JS:
com.google.maps.api.android.lib6.impl.bg.c(:com.google.android.gms.dynamite_mapsdynamite@17785050@17.7.85 (040406-253824076):545) JS:
com.google.android.gms.maps.internal.m.a(:com.google.android.gms.dynamite_mapsdynamite@17785050@17.7.85 (040406-253824076):361) JS:
hp.onTransact(:com.google.android.gms.dynamite_mapsdynamite@17785050@17.7.85 (040406-253824076):4) JS:
android.os.Binder.transact(Binder.java:499) JS:
com.google.android.gms.internal.maps.zza.transactAndReadExceptionReturnVoid(未知 来源)JS:
com.google.android.gms.maps.internal.zzg.setMyLocationEnabled(未知 来源)JS:
com.google.android.gms.maps.GoogleMap.setMyLocationEnabled(未知 来源) JS: com.tns.Runtime.callJSMethodNative(Native Method) JS: com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1203) JS:
com.tns.Runtime.callJSMethodImpl(Runtime.java:1083) JS:
com.tns.Runtime.callJSMethod(Runtime.java:1070)
你能建议我任何想法吗,什么是问题以及如何解决?我在谷歌找不到任何解决方案。
谢谢!
更新:
我改了,没改,有错误。
【问题讨论】:
-
您是否在清单中添加了权限
-
是的,我更新了我的帖子。谢谢
-
您是否也为运行时权限添加了代码?
-
不要对原生项目和 NativeScript 感到困惑,因为它是由 {N} CLI 自动生成的,所以你不应该使用平台文件夹编辑任何内容。我将其标记为重复,因为答案已包含在我对您之前帖子的回答中。演示应用清楚地展示了您应该如何获取权限的案例。
标签: android google-maps geolocation nativescript