Api google maps javascript

Résolu
Bonjour,
je souhaite recupere la longitude et latitude par rapport a une addresse donnee. pour ca j utilise api google map.
j ai fait un truc du genre dans un form :
<script>
var geocode;
var geocoder= new google.maps.Geocoder();
function codeAddress() {
var address = document.getElementById("address").value;
geocoder.geocode( { 'address': address}, function(results, status) {
var latlng =results[0].geometry.location;
document.write('loool <input type="hidden" name="latlng" value="' + latlng + '"><br />');

});
}
</script>

et avec <input type='button' value='sauvegarde' onclick='codeAddress()'/>

mais dans la page de recuperation je n ai jamais rien pour le $_POST['latlng']

Merci

5 réponses

  1. Dans un premier temps, voilà ce qu'il faut mettre dans ton <form>
    <input name = "adress" id="address" type="text" size = "35" value="" ><input id="lat" name = "lat" type="hidden" value=""><input name = "lng" id="lng" type="hidden" value="">
        <input type="button" value="Geocoder" onclick="codeAddress()">


    Il n'affichera pas la latitude et la longitude, mais il impose de devoir cliquer sur le bouton Géocoder avant d'envoyer le formulaire.

    Et maintenant, le script JavaScript qui va avec:
    <script type="text/javascript">
      var geocoder;
      var map;
    	var markers = new Array();
    	var i = 0;
      function initialize() {
        geocoder = new google.maps.Geocoder();
        var latlng = new google.maps.LatLng(47.383, 0.700);
        var myOptions = {
          zoom: 12,
          center: latlng,
    	mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    		
      }
    
      function codeAddress() {
        var address = document.getElementById("address").value;
        geocoder.geocode( { 'address': address}, function(results, status) {
          if (status == google.maps.GeocoderStatus.OK) {
    		  		ShowHide('para1'); return false;
    				document.getElementById('lat').value = results[0].geometry.location.lat();
    				document.getElementById('lng').value = results[0].geometry.location.lng();
            map.setCenter(results[0].geometry.location);
            var marker = new google.maps.Marker({
                map: map, 
                position: results[0].geometry.location
            });
    				markers.push(marker);
    				if(markers.length > 1)
    					markers[(i-1)].setMap(null);
    				i++;
          } else {
            alert("Le geocodage n\'a pu etre effectue pour la raison suivante: " + status);
          }
        });
      }
      function ShowHide(id) {
         var elt = document.getElementById(id); if (!elt) return;
         with(elt.style) {
          display = (display=="none" ) ? "" : "none";
         }
        }
    </script>


    Je pense qu'avec ce code, tu pourras récupérer ta latitude et ta longitude.
    0
    1. Bonjour, Merci pour cette reponse aussi rapide.

      alors comme code je passe a :
      <script>
      
       function initialize() {
      			   geocoder = new google.maps.Geocoder();
      			var latlng = new google.maps.LatLng(47.383, 0.700);
      			var myOptions = {
      			  zoom: 12,
      			  center: latlng,
      			mapTypeId: google.maps.MapTypeId.ROADMAP
      			}
      			map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
      
              var input = document.getElementById('address');
              var autocomplete = new google.maps.places.Autocomplete(input);
      
              autocomplete.bindTo('bounds', map);
      
              var infowindow = new google.maps.InfoWindow();
              var marker = new google.maps.Marker({
                map: map
      		  
              });
      		  
      		  google.maps.event.addListener(autocomplete, 'place_changed', function() {
                infowindow.close();
                var place = autocomplete.getPlace();
                if (place.geometry.viewport) {
                  map.fitBounds(place.geometry.viewport);
                } else {
                  map.setCenter(place.geometry.location);
                  map.setZoom(17);
                }
      
      
              });
      
            }
      	  
      	    function codeAddress() {
          var address = document.getElementById("address").value;
          geocoder.geocode( { 'address': address}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
      		  		ShowHide('para1'); return false;
      				document.getElementById('lat').value = results[0].geometry.location.lat();
      				document.getElementById('lng').value = results[0].geometry.location.lng();
              map.setCenter(results[0].geometry.location);
              var marker = new google.maps.Marker({
                  map: map, 
                  position: results[0].geometry.location
              });
      				markers.push(marker);
      				if(markers.length > 1)
      					markers[(i-1)].setMap(null);
      				i++;
            } else {
              alert("Le geocodage n\'a pu etre effectue pour la raison suivante: " + status);
            }
          });
      	
      	verification();
        }
        function ShowHide(id) {
           var elt = document.getElementById(id); if (!elt) return;
           with(elt.style) {
            display = (display=="none" ) ? "" : "none";
           }
          }
           </script>


      Et pour le form :

      j'ai bien ajoute

      <input name="address" id="address" type="text" style="width: 250px;" />

      <input id="lat" name = "lat" type="hidden" value=""><input name = "lng" id="lng" type="hidden" value="">

      <input type="button" value="sauvegarde" onclick="codeAddress()">

      J ai bien ma fonctione verrification qui ce lance ensuite et qui me redirige vers la page pour recuperer le tout .

      mais sur cette page un :

      $lat=$_POST['lat'];
      echo $lat;
      $lng=$_POST['lng'];
      echo $lng;

      Ca ne me trouve rien...

      PS:La carte ne ce charge pas non plus
      pourtant j ai bien le tout dans un <body onload='initialize()'>
      et un : <div id="map_canvas"></div>

      Merci
      0
      1. Fait un alert(); en JS pour afficher le contenu des deux hidden (par exemple juste après les avoir donné les valeurs correspondantes.

        Pour la carte, as-tu mis dans ton head:
        <script src="http://maps.google.com/maps/api/js?sensor=true" type="text/javascript"></script>
        0
        1. le alert me montre du vide
          alert(document.getElementById('lat').value);

          Alors que mon champ address s autocomplete bien avec la ville de mon choix.
          0
          1. c bon le
            ShowHide('para1'); return false;
            faisait bugguer le code
            merci beaucoup
            0