Mam więc dość prostą wersję JS, używając jammy navigator.geolocation.getCurrentPosition.
$(document).ready(function(){
$("#business-locate, #people-locate").click(function() {
navigator.geolocation.getCurrentPosition(foundLocation, noLocation);
});
navigator.geolocation.getCurrentPosition(foundLocation, noLocation);
function foundLocation(position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
var userLocation = lat + ', ' + lon;
$("#business-current-location, #people-current-location").remove();
$("#Near-Me")
.watermark("Current Location")
.after("<input type='hidden' name='business-current-location' id='business-current-location' value='"+userLocation+"' />");
$("#people-Near-Me")
.watermark("Current Location")
.after("<input type='hidden' name='people-current-location' id='people-current-location' value='"+userLocation+"' />");
}
function noLocation() {
$("#Near-Me").watermark("Could not find location");
$("#people-Near-Me").watermark("Could not find location");
}
})//end DocReady
Zasadniczo dzieje się tutaj, gdy otrzymujemy bieżącą pozycję, jeśli zostanie uzyskana, dwa „znaki wodne” zostaną umieszczone w dwóch polach z napisem „Bieżąca pozycja”, a dwa ukryte pola zostaną utworzone z danymi z długich lat (są usuwane na początku, aby nie były duplikowane za każdym razem). Istnieją również dwa przyciski z przypisaną funkcją kliknięcia, które robią to samo. Niestety co trzeci raz działa. W czym problem?
noLocation
funkcja jest wywoływana? Jeśli tak, możesz dodać error
parametr do noLocation()
i wtedy error.code
i error.message
może ci pomóc w debugowaniu. Może nam również pomóc dowiedzieć się, jakiej przeglądarki używasz i czy widzisz ten sam problem w różnych przeglądarkach.