2017-02-10 74 views
0

我正在爲移動用戶開發一個WebApp,它已經去預定義的位置,並且首先可以看到有一個<div>(文本,圖片或其他)。 所以,我有一個預定義的位置和當前的用戶位置。如果兩個地點都相同,我會展示一些東西。 我該怎麼辦?這個代碼不工作:地理位置watchPosition。當位置到達時如何獲得一個事件?

var id, ziel, options; 
//Verfolgen beginnen 
id = navigator.geolocation.watchCurrentPosition(verfolgePosition); 

function verfolgePosition(pos) { 
    var aktuell = pos.coords; 

    if (ziel.latitude === aktuell.latitude && ziel.longitude === aktuell.longitude) { 
    console.log('Sie haben Ihr Ziel erreicht'); 
    //Verfolgen beenden 
    navigator.geolocation.clearWatch(id); 
    } 
} 

ziel = { 
    latitude : 0, 
    longitude: 0 
}; 

options = { 
    enableHighAccuracy: false, 
    timeout: 5000, 
    maximumAge: 0 
}; 

的方式,目標可以是:

ziel = { 
    latitude : 52.514971, 
    longitude: 13.369172 
}; 
+0

沒有方法'watchCurrentPosition()'。你正在尋找的是'.watchPosition()'[W3](https://dev.w3.org/geo/api/spec-source.html#watch-position)/ [mdn](https:// developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition) – Andreas

+0

Yes is true。我將它改爲'.watchPosition',但它只能使用一次。也許是因爲可移動位置(移動設備)快速變化以獲得確切的固定位置,同樣,如果我在相同位置測試此腳本。我該如何解決它? – kubus1234

+0

從我的評論中的w3鏈接:「_在手錶過程的步驟5.2.2中,只有在獲得新位置並且此**位置與先前報告的位置**顯着不同時才調用successCallback **。關於什麼構成顯着差異的定義留待執行。**此外,在步驟5.2.2和5.2.3中,實現可能對回調頻率施加限制,以避免不經意地消耗不成比例的資源** ._「 – Andreas

回答

0

我剛打了一點點我的代碼,並重新激活該項目。 現在的問題是if聲明。我比較兩個值,經度和緯度,但在結果他們不相等。怎麼了?

<script> 
    (function() { 

     if(!!navigator.geolocation) { 

      var map, 
       ziel, 
       options; 

      var mapOptions = { 
       zoom: 15, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 

      ziel = { 
      latitude : 52.2741, 
      longitude: 8.0317 
      }; 

      options = { 
      enableHighAccuracy: true, 
      timeout: 5000, 
      maximumAge: 0 
      }; 

      map = new google.maps.Map(document.getElementById('google_canvas'), mapOptions); 

      navigator.geolocation.watchPosition(function(position) { 

       var geolocate = new google.maps.LatLng(position.coords.latitude.toFixed(4), position.coords.longitude.toFixed(4)); 
       var ziel = new google.maps.LatLng(52.2741, 8.0317); 

       if (ziel.latitude == position.coords.latitude.toFixed(4) && ziel.longitude == position.coords.longitude.toFixed(4)) { 

       alert("I managed it"); 
       //Verfolgen beenden 
       //navigator.geolocation.clearWatch(id); 
       } 
       else { 

       alert("Fail !!! meine Position "+ geolocate +" Zielposition "+ ziel +""); 

       } 


       var infowindow = new google.maps.InfoWindow({ 
        map: map, 
        position: geolocate, 
        content: 
         '<h1>Location pinned from HTML5 Geolocation!</h1>' + 
         '<h2>Latitude: ' + position.coords.latitude.toFixed(4) + '</h2>' + 
         '<h2>Longitude: ' + position.coords.longitude.toFixed(4) + '</h2>' 
       }); 

       map.setCenter(geolocate); 

      }); 

     } else { 
      document.getElementById('google_canvas').innerHTML = 'No Geolocation Support.'; 
     } 

    })();