2014-11-01 40 views
2

在此先感謝。我建立了一個網站,當您單擊按鈕「導航」時,可以選擇將您引導至特定位置。一切正常工作在桌面上,並且手機的GPS啓用時,一切工作正常。打開和關閉GPS時的地理位置問題

我使用谷歌地圖的參考,它工作得很好。

http://maps.google.com/maps?saddr=myLat,myLng&daddr=targetLat,targetLng 

我做這個$( '按鈕')點擊()。不在$(window).load$(document).ready。當您點擊該按鈕時,它會調用地理位置功能:

function getGeolocation(){ 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(geoSuccess, geoError); 
    } else { 
     $('.error-message').html('<p>Your browser does not support this function</p>'); 
    } 
} 

function geoSuccess(position) { 
    myLat = position.coords.latitude; 
    myLng = position.coords.longitude; 

    window.location.href = 'http://maps.google.com/maps?saddr=' + myLat + ',' + myLng + '&daddr=targetLat,targetLng'; 
} 

function geoError(){ 
    switch(error.code) { 
     alert('example alert - enable GPS'); 

     case error.PERMISSION_DENIED: 
      $('.error-message').html('<p>User denied the request for Geolocation.</p>'); 
      break; 
     case error.POSITION_UNAVAILABLE: 
      $('.error-message').html('<p>Location information is unavailable.</p>'); 
      break; 
     case error.TIMEOUT: 
      $('.error-message').html('<p>The request to get user location timed out.</p>'); 
      break; 
     case error.UNKNOWN_ERROR: 
      $('.error-message').html('<p>An unknown error occurred.</p>'); 
      break; 
    } 
} 

但是,當GPS被禁用時會出現問題。

首先,有時它不會輸入geoError()。我嘗試了很多次,但是我「發現」的唯一一件事是它有時會緩存。那可能嗎 ?

但主要問題是,當GPS被禁用時,會彈出「示例警報」,然後打開我的GPS並再次單擊該按鈕,它不再工作。我必須刷新頁面才能應用GPS打開。我想避免這種情況。有誰知道爲什麼會發生這種情況,有沒有辦法做到我想要的?

另一個問題是當我打開GPS打開我的頁面時。然後關閉它並單擊按鈕。完全沒有任何反應。它輸入getGeolocation(),變爲true,然後停止。它不輸入getCurrentPosition()。有任何想法嗎?

回答

0

我曾遇到同樣的問題,最後我找到了解決方案。您可以將getCurrentPosition更改爲watchPosition,看起來getCurrentPosition無法識別位置更改時的情況,請幫助我們執行此操作。嘗試我的解決方案,希望它可以幫助你:) P/S你應該設置的時間:10000爲watchpostion或getcurrentpostion

0

我有同樣的問題在Android 6.0和Chrome 59.0.3071.125。

總之:當我啓動一個web應用程序位置關閉,我收到一個PositionError正如所料。

但是當我切換位置回在,以navigator.geolocation.getCurrentPositionnavigator.geolocation.watchPosition回報每一個後續調用同樣的錯誤。

我試過一樣maps.google.com和結果是完全一樣的(他們顯示一個小吃店谷歌地圖無法確定您的確切位置)所以我相信,沒有解決方法。

ionic framework forum上有一個類似的帖子 - 他們也沒有找到解決方案。

綜上所述:

看起來Chrome的檢查位置服務**在頁面加載,並且不更新狀態了。

所以唯一有用的是重新加載web應用程序強迫鉻再次檢查,如果位置服務可用。


更新:

這是鉻一個已知的bug:672301721977。 變通辦法在Chrome Mobile v59後面lsd-permission-prompts後面可用。