2013-08-07 31 views
7

OK, vì vậy tôi đã tìm kiếm một phản hồi thích hợp cho vấn đề này trong một thời gian. Tôi có một ứng dụng web sử dụng navigator.geolocation.getCurrentPosition để có được vị trí của người dùng.Các thiết bị Samsung Galaxy không thể sử dụng geolocation.getCurrentPosition

Trình duyệt gốc trên thiết bị Samsung Galaxy hầu như luôn gặp sự cố với mã getCurrentPosition. Tôi đã thử tất cả các loại biến thể của mã này với các cuộc gọi lại và hết thời gian chờ nhưng luôn có cùng một vấn đề. Nhiều người đã ghi lại vấn đề này và một số cho biết rằng việc khởi động lại thiết bị sẽ hoạt động (đôi khi khởi động lại không hoạt động, nhưng không phải luôn luôn - và cảnh báo yêu cầu người dùng khởi động lại thiết bị của họ có vẻ quá lố bịch).

Có ai đã tìm ra cách chắc chắn để sử dụng getCurrentPosition để hoạt động trên Thiết bị Samsung Galaxy không? Dưới đây là những gì tôi đang làm việc với ...

<script> 

$(document).ready(function(){ 

if(navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(success, fail); 
} 

else { 
    alert("Sorry, your browser does not support geolocation services."); 
} 

function success(position) { 

    window.location = "mobile_set_coordinates.php?user_lat=" + position.coords.latitude + 
    "&user_lon=" + position.coords.longitude + "&accuracy=" + position.coords.accuracy; 
} 

function fail() { 
    // Could not obtain location 
} 

}); 

</script> 

Ngoài ra, đây là một liên kết đến một trong những cuộc thảo luận về vấn đề này: https://groups.google.com/forum/#!topic/phonegap/ESrHAjFHgFU

+0

Không có gì sai với mã của bạn. Vấn đề cũng tồn tại trên lưu ý và lưu ý thiên hà 2. –

Trả lời

18

tôi có chính xác cùng một vấn đề là bạn có vài tuần trước. Tôi đã cố gắng nghiên cứu khoảng 2 tuần trên internet, xem xét tất cả các giải pháp mà tôi có thể tìm thấy. Sau khi tất cả, tôi phát hiện ra rằng:

  1. Nếu Google Maps chưa bao giờ mở trên điện thoại mục tiêu của bạn, chức năng này không hoạt động.
  2. Đặt lại trạng thái GPS, sau đó khởi động lại điện thoại của bạn. Nó sẽ giúp.
  3. Nếu bước 2 không hoạt động, hãy đặt lại trạng thái GPS, bật Tự động nhận múi giờ vào cài đặt Ngày giờ, sau đó khởi động lại điện thoại của bạn.

Theo kiến ​​thức của tôi, không có gì sai với mã. Trong thực tế, mã của tôi gần giống như của bạn. Nó xảy ra không chỉ trên các thiết bị Galaxy mà còn trên một số HTC. Tôi phải đối mặt với vấn đề này trên Galaxy S2, Galaxy Note 2, HTC Nexus One, HTC One X và HTC Incredible S. Tôi nghĩ rằng nó phải là vấn đề giữa các thiết bị Android và sự cạnh tranh của mã bằng cách nào đó.

Chúc mừng,

+0

Xin chào MaiLong, tôi hiện đang tạo một ứng dụng sử dụng vị trí địa lý. Thật vậy, không thể sử dụng vị trí địa lý nếu Google Maps chưa mở trên điện thoại. Có cách nào để phát hiện xem Google Maps đã được sử dụng chưa? Cảm ơn. – Jeongbebs

+0

Vâng, thông thường tôi chỉ cần mở ứng dụng Google Maps. Nếu đây là lần đầu tiên, màn hình chào mừng sẽ hiển thị. Đề xuất của tôi là cố gắng mở Google Maps một lần từ ứng dụng của bạn khi người dùng sử dụng nó lần đầu tiên. Chúc mừng, –

+0

mở bản đồ google hoạt động cho tôi. trong tình hình của tôi, tôi ở Trung Quốc, dịch vụ google bị chặn, vì vậy tôi mở VPN, sau đó mở bản đồ google, sau đó mở webview tôi đang làm việc. Nó hoạt động hoàn hảo. – Ninja

2

Tôi đã có điều gì đó rất giống với tôi. GPS sẽ hoạt động tốt trên mọi thiết bị khác nhưng nó sẽ lỗi trên các thiết bị Galaxy.

Điều tôi phát hiện ra là có thể mất tối đa 10 giây để có được vị trí GPS trên các thiết bị này. Tôi cũng phải biến enabledHighAccuracy thành sai. Đây là mã của tôi.

 if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(
       function(position) { 
        // success! 
       }, 
       function() { 
        // failed to get a GPS location before timeout! 
       }, { 
        enableHighAccuracy: false, 
        timeout: 10000, 
        maximumAge: 10000 
       }); 
     } else { 
      // no support for geolocation 
     } 

Hy vọng điều này sẽ hữu ích!

1

Tôi có một Samsung Galaxy Trend Plus GT-S7580. Vị trí địa lý trên trang web của tôi không hoạt động với thiết bị này. Trước đó nó đã làm việc với một bàn di chuột Asus, và mọi thiết lập mở để truy cập vào và từ Internet. Ngay sau khi tôi cho phép không chỉ truy cập dữ liệu di động đến địa điểm của tôi, mà còn mạng wifi và truy cập Google và thu thập dữ liệu được kết nối với cài đặt này, nó bắt đầu hoạt động. Trong trường hợp này, nó chỉ là thiết lập đó.

1

Tôi gặp vấn đề tương tự trên máy tính bảng Galaxy GT-N8013, getCurrentPosition dường như không hoạt động trên Android nhưng nó hoạt động trên ios. Để khắc phục vấn đề, trước tiên tôi tăng thời gian chờ. Thứ hai, mở ứng dụng bản đồ google. Thứ ba, khởi động lại máy tính bảng. Nó hoạt động sau đó.

$cordovaGeolocation.getCurrentPosition({timeout: 30000, enableHighAccuracy: false}) 
+0

Điều này làm việc cho tôi. – Tiois

1

Đối với tôi, Chrome có vẻ là vấn đề - trình duyệt không cho phép nguồn gốc không an toàn như HTTP. Nên được giải quyết bằng cách chuyển dữ liệu qua HTTPS (see Chromium). Làm việc trên Galaxy S7 Edge của tôi khi thử trong một trình duyệt thay thế.