2012-10-09 27 views
6

Phiên bản PhoneGap: 2.0.0. API Android cấp 16 (phiên bản 4.0.3). mẫu mã mà nhắc nhở một lỗi:PhoneGap. Không thể khởi động dịch vụ Vị trí địa lý

navigator.geolocation.getCurrentPosition(onSuccess, onError, {enableHighAccuracy:true}); 

function onSuccess(position) { 
    console.log('latitude: '+ position.coords.latitude); 
    console.log('longitude: '+ position.coords.longitude);     
} 

function onError(error) { 
    console.log('Appeared error : '+ error.message);     
} 

Luôn nhận được một lỗi trong giả lập Failed to start Geolocation service, mã lỗi 2. Thậm chí nếu gửi tọa độ GPS thông qua giao diện điều khiển Android hoặc DDMS

quyền manifest Android:

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

Trả lời

6

Bạn đang thử nghiệm này trên chỉ là giả lập? Dịch vụ định vị địa lý luôn thất bại trong trình giả lập Android của tôi nhưng không phải trên thiết bị thực.

EDIT: Xin hãy thử sử dụng đoạn mã sau

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady() { 
    navigator.geolocation.getCurrentPosition(myPositionSuccess, myPositionError, {maximumAge: 300000, timeout:10000, enableHighAccuracy : true}); 
}; 
+0

Tôi có thiết bị thực với phiên bản Android 2.3 nhưng không có thiết bị có phiên bản 4.x. Vì vậy, tôi đang thử nghiệm trong trình giả lập. Có, trong thiết bị thực không có lỗi như vậy. Chỉ trong giả lập. –

+0

Vui lòng thử thêm eventListener đó. – jmpenetra

+0

@ JoãoPenetra Tôi đã thêm mã này vào mã của mình và nó không nhận được bất kỳ lỗi nào! Cảm ơn vì điều đó! Nhưng ... bây giờ nó tăng gấp đôi yêu cầu JSONP của tôi lên Google Fusion Tables cũng sử dụng vị trí đó. Bạn có thể nghĩ ra bất kỳ lý do gì tại sao nó sẽ thực hiện hai cuộc gọi bằng cách sử dụng 'enableHighAccuracy'? Nếu không có điều đó trong đó, nó chỉ trả về 1 tập hợp dữ liệu nhưng trước tiên sẽ đưa ra một lỗi. Đây là tệp: https://github.com/jamez14/TrailFinder/blob/master/TrailFinder/www/js/map.js – jamez14

6

Bạn cần phải thiết lập các tùy chọn enableHighAccuracy để true trong khi bạn đang cố gắng để có được vị trí.

navigator.geolocation.getCurrentPosition(onSuccess, onError,{enableHighAccuracy:true}); 

Hơn nữa, để xác định tọa độ vị trí của bạn trong mô phỏng,

Eclipse -> Open Perspective -> DDMS -> Emulator Control -> Vị trí Controls

Xác định tọa độ của vị trí và nhấn "Gửi".

0

Tôi đã cố khắc phục sự cố này trong nhiều tuần. Tôi tìm kiếm trên mạng và dường như hầu hết mọi người đều gặp phải vấn đề này liên quan đến phonegap bất cứ khi nào họ đang phát triển cho Android. Giải pháp là kiểm tra mã của tôi trên thiết bị có GPRS. Ngoài ra hãy chắc chắn rằng trước khi chạy mã của bạn, GPRS và wifi của bạn được bật. Tránh sử dụng trình giả lập để kiểm tra GPRS vì có rất nhiều tính năng bị thiếu và lỗi.

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