2017-01-06 7 views
-1

У меня есть сценарий, который я не могу получить. Я продолжаю получать ошибку «Geocoder failed», но я не уверен, почему. Предполагается, что длинный/лат, а затем обратный геокод он отобразит адрес улицы в окне предупреждения. Я попробовал убедиться, что браузер разрешает ему делиться местоположением. Я также пытался получить доступ через HTTPS, поскольку я читал, что это было необходимо сейчас, но оно все еще не работает. Если кто-нибудь может помочь мне получить эту работу, я буду очень благодарен! Спасибо заранее.Обратный геокодирование, чтобы показать адрес

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Current Location Address</title> 
    <style> 
    </style> 
</head> 



<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var geocoder; 

    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction); 
} 
//Get the latitude and the longitude; 
function successFunction(position) { 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
    codeLatLng(lat, lng) 
} 

function errorFunction(){ 
    alert("Geocoder failed"); 
} 

    function initialize() { 
    geocoder = new google.maps.Geocoder(); 



    } 

    function codeLatLng(lat, lng) { 

    var latlng = new google.maps.LatLng(lat, lng); 
    geocoder.geocode({'latLng': latlng}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     console.log(results) 
     if (results[1]) { 
     //formatted address 
     alert(results[0].formatted_address) 
     //find country name 
      for (var i=0; i<results[0].address_components.length; i++) { 
      for (var b=0;b<results[0].address_components[i].types.length;b++) { 

      //there are different types that might hold a city admin_area_lvl_1 usually does in come cases looking for sublocality type will be more appropriate 
       if (results[0].address_components[i].types[b] == "administrative_area_level_1") { 
        //this is the object you are looking for 
        city= results[0].address_components[i]; 
        break; 
       } 
      } 
     } 
     //city data 

     alert(city.short_name + " " + city.long_name) 


     } else { 
      alert("No results found"); 
     } 
     } else { 
     alert("Geocoder failed due to: " + status); 
     } 
    }); 
    } 
</script> 
</head> 
<body onload="initialize()"> <font face="verdana"> 
     <!DOCTYPE html> 
If available, your current address will have been displayed in a message window. Please press 'Back' when finished. 


</body> 
</html> 
+0

Используйте второй параметр, переданный вашей 'errorFunction', чтобы узнать больше об ошибке. Пример: https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition –

+0

Привет, Pekka - спасибо за ответ, но я не уверен, как это реализовать. – Martyn

ответ

0

Ваш errorFunction автоматически передается в error параметр, который вы можете взглянуть на:

function errorFunction(error){ 
    alert("Geocoder failed: "+error.message); 
} 

См the MDN docs для более фона и примеров.

+0

Спасибо за это, я добавил его в свой скрипт, но когда я его запустил, я просто получил сообщение «Geocoder failed:', отображаемое в окне предупреждения. Кажется, он не показывает никаких подробностей. – Martyn

+0

Хм, странно. Что-то меняется при переключении 'error.message' с' error.code'? –

+0

Что изменилось, да. Теперь я получаю «Geocoder failed: 2», но я не уверен, что означает 2. – Martyn