2016-06-22 24 views
6

Tôi đang sử dụng plugin Ionic 2 Geolocation gốc và nó không hoạt động như mong đợi. Đầu tiên, tôi thêm plugin.Vị trí địa lý ionic 2 không hoạt động trên thiết bị Android

ionic plugin add cordova-plugin-geolocation 

Sau đó, tôi nhập plugin và thực hiện cuộc gọi để nhận vị trí hiện tại.

import { Geolocation } from 'ionic-native'; 
import { Geoposition, GeolocationOptions } from 'ionic-native/dist/plugins/geolocation'; 

export class MyComponent { 
protected getLocation():Promise<Geoposition> { 
    let options:GeolocationOptions = { 
    maximumAge: 0, timeout: 5000, enableHighAccuracy: false 
    }; 
    return Geolocation.getCurrentPosition(options) 
    .catch(error => { console.error(error.message) }; 
} 
} 

Tôi cũng đã kiểm tra tệp AndroidManifest.xml của mình.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Tôi nhận thấy rằng thời gian chờ luôn vượt quá. Nếu tôi để nó mặc định (thời gian chờ được thiết lập để vô cùng theo mặc định), sau đó khoảng 20 phút sau đó, tôi thực sự có được một vị trí địa lý. Tất nhiên, 20 phút không phải là lý tưởng.

Tôi cũng đã thử sử dụng navigator như sau. Nhưng tôi nhận được kết quả chính xác.

navigator.geolocation.getCurrentPosition(
position => { 
    console.info('using navigator'); 
    console.info(position.coords.latitude); 
    console.info(position.coords.longitude); 
}, 
error => { 
    console.warn('using navigator'); 
    console.warn(error.code); 
    console.warn(error.message); 
}, 
options 
); 

Khi thử nghiệm trên Chrome, mã hoạt động như mong đợi; sự khác biệt duy nhất là tôi nhận được một popup yêu cầu nếu tôi muốn cho phép các trang để truy cập vị trí của tôi.

tôi thấy rất nhiều người có cùng một vấn đề trên SO với Ionic quá, nhưng đó là với phiên bản 1. Tôi muốn hỏi câu hỏi này trong bối cảnh Ionic 2.

Bằng cách này, tôi cũng đã cập nhật Cordova và phiên bản được hiển thị là 6.0.2.

npm update -g cordova 

Version thông tin

  • Ionic 2.0.0-beta.30
  • Cordova 6.0.2
  • Gulp CLI 1.2.1 và địa phương 3.9.1
+1

Đối mặt với cùng một vấn đề. Bạn đã tìm thấy giải pháp chưa? – likerRr

+0

giải pháp được tìm thấy? –

+0

không, tôi chưa tìm thấy giải pháp. ngày khác tôi nhìn vào ion 2, và có một plugin định vị địa lý mới, tôi sẽ thử điều đó. tôi sẽ đăng liên kết sau và thử xem nó có giúp ích gì không. –

Trả lời

0

lẽ Tôi tìm thấy một giải pháp. Vấn đề là với module GPS của tôi. Cuối cùng nó ngừng tìm thấy vị trí của tôi tại bất kỳ trang web nào. Tôi nạp lại điện thoại và bây giờ mọi thứ đều hoạt động.

Vì vậy, trước tiên hãy kiểm tra xem bạn có thể xác định vị trí của mình trên trang web maps.google.com như vậy không. Nếu nó không thể xác định vị trí của bạn, thì vấn đề là với điện thoại của bạn. Hãy thử tải lại hoặc reflash nó.

4

Sử dụng mã này:

if (navigator.geolocation) { 
     var options = { 
     enableHighAccuracy: true 
     }; 

     navigator.geolocation.getCurrentPosition(position=> { 
     console.info('using navigator'); 
     console.info(position.coords.latitude); 
     console.info(position.coords.longitude); 
     }, error => { 
     console.log(error); 
     }, options); 
    } 

Ghi nhập khẩu Geolocation:

import { Geolocation } from 'ionic-native'; 

Và thêm plugin:

ionic plugin add cordova-plugin-geolocation 
+0

Điều này sẽ hoạt động mà không có lỗi. cảm ơn bạn @Felipe –

+0

Điều này hoạt động tốt đẹp. Trên phiên bản mới hơn với lời hứa bạn sẽ làm geolocation.getCurrentPosition (tùy chọn) .then ((position) => {// some logic here}); – Kaylined

+0

làm thế nào tôi có thể để chức năng này chạy nếu vị trí tắt rồi bật nó lên. i có nghĩa là nếu vị trí tắt vị trí địa lý sẽ trả về lỗi, vì vậy nếu sau này tôi bật nó trong khi tôi không cùng một trang, vị trí địa lý sẽ không chạy lại, vậy làm cách nào để tôi chạy lại như trình nghe trên trạng thái vị trí. –

0

này thường gây ra whey bạn đã thêm chỉ plugin ion và quên thêm plugin cordova (không chắc tại sao plugin không được cài đặt bởi plugin ionic thêm dấu phẩy d):

ionic plugin add cordova-plugin-geolocation 

và sau đó:

cordova plugin add cordova-plugin-geolocation 

cài đặt plugin cordova có thể sửa chữa các lỗi trong một số tình huống.

Điều này cũng xảy ra khi chạy ứng dụng trên trình duyệt với ionic serve vì plugin cordova không khả dụng.

1

Cài đặt cả cordova phụ thuộc

cordova plugin add cordova-plugin-geolocation 
cordova plugin add cordova-plugin-whitelist 

Thêm quyền này để AndroidMainfest.xml

<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" /> 

Hãy ghi nhớ, khi chạy ion cordova chạy android -l geolocation sẽ ném lỗi không an toàn này. Thử nghiệm trên trình duyệt ur hoặc thực hiện một thao tác đơn giản với

ionic cordova run adnroid 

Nó giải quyết được vấn đề cho tôi, hy vọng nó giúp người khác.

+0

Điều này phù hợp với tôi, cảm ơn bạn –

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