【发布时间】:2018-04-19 18:32:48
【问题描述】:
我正在编写一个应用程序,它需要在某个时间点获取您的位置。 我为此使用了离子原生地理定位,它被发送到谷歌 API 进行反向地理编码。
当我只使用ionic serve 时,它完全按照我想要的方式工作。
但是当我尝试在 android 上运行它时,它似乎根本不起作用。
如果我运行ionic cordova run android --device -c -l,我会得到这些控制台日志:
[20:23:58] console.log: Device Ready
[20:23:58] console.log: [object Object]
[20:23:58] console.log: No location Error
这是该页面上代码的 sn-p。
constructor(public navCtrl: NavController, public navParams: NavParams, private geo: Geolocation, private platform: Platform, public geocodeProvider: GeocodeProvider) {
this.platform.ready().then(()=>{
console.log("Device Ready");
this.geo.getCurrentPosition(this.options).then(resp =>{
console.log(resp.coords.latitude);
console.log(resp.coords.longitude);
this.getCountry(resp.coords.latitude,resp.coords.longitude);
}).catch((err)=>{
console.log(err)
});
});
}
getCountry(lat,long){
this.geocodeProvider.getCountry(lat,long).subscribe(result =>this.country = this.getName(result));
}
getName(JSON:IRootObject){
var location = JSON.results[0].address_components[0].long_name;
return JSON.results[0].address_components[0].long_name;
}
我似乎无法找出它为什么不起作用。
编辑:
我的安卓清单:
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.ionic.starter" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-feature android:name="android.hardware.location" />
<uses-feature android:name="android.hardware.location.gps" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data android:name="com.google.android.geo.API_KEY" android:value="***" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
</application>
</manifest>
【问题讨论】:
-
您是否拥有所需的权限?
COURSE_LOCATION,FINE_LOCATION? -
我用 android manifest 编辑了我的问题
标签: android cordova typescript ionic-framework geolocation