2015-01-25 8 views
8

Ho il seguente codice che richiede all'utente di consentire la loro posizione corrente nel browser, quando fanno clic/tap sul collegamento di posizione.Problema con la geolocalizzazione in IE11

Questo funziona bene in Chrome, Safari e Firefox ma non riesco a farlo funzionare in IE11. Alcune volte mostra la notifica del browser per l'utente per dare la loro posizione, ma poi non succede nulla.

Mi chiedevo se qualcun altro ha avuto problemi con Google Maps e la richiesta di posizione in IE11 e anche se qualcuno ha una soluzione?

<p id="error"></p> 
<form action="/" method="post"> 
<a class="location-link" id="location-link" href="#"><img src="/static/images/icons/location.png" alt="Get your current location" title="Get your current location" /></a><input type="text" name="location" value="" placeholder="Find a salon" > 
<input class="viewbtn3" value="Submit" type="submit"></form> 
<script src="/static/js/jquery.1.9.1.js"></script> 
<script src="https://maps.google.com/maps/api/js?sensor=true"></script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    if (typeof navigator.geolocation == "undefined") { 
     $("#error").text("Your browser doesn't support the Geolocation API"); 
     $(".location-instruction span").hide(); 
     $(".location-link").hide(); 
     return; 
    } 
    $("#location-link").click(function(event) { 
     event.preventDefault(); 
     var addressId = this.id.substring(0, this.id.indexOf("-")); 
     var thisid = $(this).attr("id"); 
     //console.log(thisid); 
     navigator.geolocation.getCurrentPosition(function(position) { 
      var geocoder = new google.maps.Geocoder(); 
      geocoder.geocode({ 
       location: new google.maps.LatLng(position.coords.latitude, position.coords.longitude) 
      }, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        $("#" + thisid).parent().find('input[name="location"]').val(results[0].formatted_address); 
        $(".choose_wrap").addClass('sucess'); 
       } else { 
        $("#" + thisid).parent().find("#error").html("Unable to retrieve your address<br />"); 
        $(".choose_wrap").addClass('fail'); 
       } 
      }) 
     }, function(positionError) { 
      $("#" + thisid).parent().find("#error").html("Error: " + positionError.message + "<br />") 
     }, { 
      enableHighAccuracy: true, 
      timeout: 10 * 1000 
     }) 
    }); 
}); 
</script> 
+0

ha funzionato come in altri browser. Non ho avuto problemi – Dimple

+0

Hmm, hai provato IE11 e Windows 10 per caso? – doubleplusgood

+0

Sì, avevo provato IE11 ma aveva solo un problema di impostazione del margine .. niente di sbagliato con la geolocalizzazione – Dimple

risposta

5

Questo in realtà ha lavorato per me su IE11 senza modifiche quando l'ho provato su Codepen:

$(document).ready(function() { 
 
    if (typeof navigator.geolocation == "undefined") { 
 
     $("#error").text("Your browser doesn't support the Geolocation API"); 
 
     $(".location-instruction span").hide(); 
 
     $(".location-link").hide(); 
 
     return; 
 
    } 
 
    $("#location-link").click(function(event) { 
 
     event.preventDefault(); 
 
     var addressId = this.id.substring(0, this.id.indexOf("-")); 
 
     var thisid = $(this).attr("id"); 
 
     //console.log(thisid); 
 
     navigator.geolocation.getCurrentPosition(function(position) { 
 
      var geocoder = new google.maps.Geocoder(); 
 
      geocoder.geocode({ 
 
       location: new google.maps.LatLng(position.coords.latitude, position.coords.longitude) 
 
      }, function(results, status) { 
 
       if (status == google.maps.GeocoderStatus.OK) { 
 
        $("#" + thisid).parent().find('input[name="location"]').val(results[0].formatted_address); 
 
        $(".choose_wrap").addClass('sucess'); 
 
       } else { 
 
        $("#" + thisid).parent().find("#error").html("Unable to retrieve your address<br />"); 
 
        $(".choose_wrap").addClass('fail'); 
 
       } 
 
      }) 
 
     }, function(positionError) { 
 
      $("#" + thisid).parent().find("#error").html("Error: " + positionError.message + "<br />") 
 
     }, { 
 
      enableHighAccuracy: true, 
 
      timeout: 10 * 1000 
 
     }) 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<script src="https://maps.google.com/maps/api/js?sensor=true"></script> 
 
<p id="error"></p> 
 
<form action="/" method="post"> 
 
    <a class="location-link" id="location-link" href="#"><img src="/static/images/icons/location.png" alt="Get your current location" title="Get your current location" /></a> 
 
    <input type="text" name="location" value="" placeholder="Find a salon"> 
 
    <input class="viewbtn3" value="Submit" type="submit"> 
 
</form>

L'unica cosa che può suggerire è controllare la console degli sviluppatori per vedere se ci sono errori durante il test.

+0

Grazie mille per aver controllato Eric. Il nostro cliente ha avuto alcune persone test e non sembra funzionare per loro, ma ricontrollerò che link con browsstack. – doubleplusgood

+0

hai usato Windows 10? In Win10 e IE11, il browser richiede il permesso ma poi non fa nulla. – doubleplusgood

+0

No, sono al momento su Windows 8.1. In Windows 10, testare Edge piuttosto che IE11. Forse dopo aver dato il permesso, prova a ricaricare e farlo di nuovo. – Eric

2

Ho provato questo su Windows 8. Se le impostazioni di posizione sulla macchina (vedi Pannello di controllo/Modifica impostazioni posizione) sono disattivate, viene restituito un messaggio di errore. Nel codice sopra "non succede nulla". "# Location-Link" "Messaggio # errore" e non condividono lo stesso genitore, in modo da questa linea non viene visualizzato il messaggio di errore:

$("#" + thisid).parent().find("#error").html("Error: " + positionError.message + "<br />") 

È questo problema che impediva il "Geo-localizzazione non è acceso" messaggio da presentarsi sulle macchine client?

+0

Hey brenzy, sicuramente un problema lì se il messaggio di errore non viene visualizzato, quindi ho bisogno di risolverlo. Semplicemente non capisco perché alcuni utenti su IE11/Win10 possono utilizzare la ricerca della posizione e altri no. Ma proverò a correggere prima questo errore. – doubleplusgood

+0

@doubleplusgood, il motivo potrebbe essere che hanno le impostazioni di posizione disattivate e non lo sanno, o che Microsoft non supporta la loro posizione (vedere altre risposte sul perché le posizioni differiscono). Si spera che la correzione del messaggio di errore ti fornisca una risposta su ciò che sta accadendo. – brenzy