2016-02-09 26 views
8

Tôi đang xây dựng ứng dụng Android đầu tiên của mình với phản ứng gốc. Điều tôi muốn làm là hiển thị vị trí hiện tại của tôi. Nhưng nó dường như không hoạt động trên bộ giả lập của tôi. Thay vào đó, tôi nhận được lỗi "Yêu cầu vị trí đã hết thời gian chờ" trong bảng điều khiển. Đây là mẫu mã từ tệp idex.android.js của tôi:Yêu cầu vị trí đã hết thời gian trên trình giả lập Android với React-Native

initGeoloc() { 
    navigator.geolocation.getCurrentPosition(
    (position) => { 
     console.log(JSON.stringify(position)); 
    } 
    ); 
} 

render() { 
    this.initGeoloc(); 
    ... some more code and the view 

Mã này rất đơn giản vì vậy tôi không nghĩ rằng lỗi xuất phát từ đây. tôi thêm những phép trong file AndroidManifest.xml của tôi (ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION):

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.myapp"> 
    <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 
     android:allowBackup="true" 
     android:label="@string/app_name" 
     android:icon="@mipmap/ic_launcher" 
     android:theme="@style/AppTheme"> 
     <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     </activity> 
     <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> 
     <uses-library android:name="com.google.android.maps" /> 
     <meta-data android:name="com.google.android.geo.API_KEY" android:value="mykey"/> 
</application> 

tôi không thấy bất cứ điều gì sai ở đây cả, vì vậy tôi nghĩ rằng vấn đề xuất phát từ giả lập Android. Tôi sử dụng Trình quản lý thiết bị ảo Android để tạo Nexus 5, API Google (Google Inc.) - Thiết bị ảo cấp API 23. Vị trí địa lý được kích hoạt trên thiết bị nhưng tôi không thấy bất kỳ công cụ định vị địa lý nào trong các công cụ hoặc cấu hình developper. Vì vậy, có lẽ lỗi đến từ đây. Thiết bị ảo không trả về bất kỳ vị trí nào.

Làm cách nào để khắc phục sự cố này?

+1

Hãy thử http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator – deanmcpherson

+0

cảm ơn bạn, tôi không biết tại sao tôi không tìm thấy câu hỏi này ngay từ đầu. – manu

+0

** Tôi đang đối mặt với cùng một vấn đề, bạn có tìm thấy bất kỳ giải pháp nào cho vấn đề này không? ** bất kỳ câu trả lời nào ở đây không giúp tôi. Tôi có thể thiết lập vị trí trong giả lập và tôi có thể xem kết quả trong bản đồ google trong trình giả lập, nhưng đối với bản địa nó chỉ là ném một lỗi thời gian ra. – manjs

Trả lời

6

bộ là enableHighAccuracy sai, vấn đề sẽ được giải quyết

navigator.geolocation.getCurrentPosition((position) => { 
    console.log(position); 
}, error => console.error(error), { enableHighAccuracy: false, timeout: 20000, maximumAge: 1000 }); 
+0

Lưu ý rằng 'enableHighAccuracy: false' có thể dẫn đến _very_ vị trí không chính xác. – Bataleon

Các vấn đề liên quan