Mysql
 sql >> Base de données >  >> RDS >> Mysql

Remplissage automatique du pays et de la ville à partir du code postal, et inversement

* C'est très simple, ce que vous devez faire est simplement d'obtenir le code postal de l'utilisateur et avec cela, vous pouvez obtenir le $pays et $ville en utilisant l'api google. ici, je vous donne un exemple de la façon dont j'obtiens la longitude et la latitude du code postal, c'est-à-dire le code postal.

$postcode=$_POST('postcode');
                if($postcode)
                {

                    $address = urlencode($postcode);
                    $url='http://maps.googleapis.com/maps/api/geocode/json?address='.$address.'&sensor=false';

                    $ch = curl_init(); 
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
                    curl_setopt($ch, CURLOPT_URL, $url);
                    $data = curl_exec($ch);
                    curl_close($ch);
                    $source = $data;
                    $obj = json_decode($source);
                    $lat = $obj->results[0]->geometry->location->lat;
                    $long = $obj->results[0]->geometry->location->lng;


                }
$longitude=$long;
$latitude=$lat;

que vous pouvez insérer les deux variables ci-dessus $longitude et $latitude dans votre base de données.simple comme ça :) . allez sur le lien suivant https://developers.google.com/ cartes/documentation/géocodage/?csw=1

maintenant, pour obtenir le nom du pays à partir de la longitude et de la latitude, utilisez le géocodage inversé. fournissez une paire latitude/longitude séparée par des virgules dans le paramètre latLng.

 var geocoder;
  var map;
  var infowindow = new google.maps.InfoWindow();
  var marker;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(40.730885,-73.997383);
    var mapOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
  }

  function codeLatLng() {
    var input = document.getElementById("latlng").value;
    var latlngStr = input.split(",",2);
    var lat = parseFloat(latlngStr[0]);
    var lng = parseFloat(latlngStr[1]);
    var latlng = new google.maps.LatLng(lat, lng);//here you will get your country and city name
    geocoder.geocode({'latLng': latlng}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        if (results[1]) {
          map.setZoom(11);
          marker = new google.maps.Marker({
              position: latlng,
              map: map
          });
          infowindow.setContent(results[1].formatted_address);
          infowindow.open(map, marker);
        }
      } else {
        alert("Geocoder failed due to: " + status);
      }
    });
  }

Lisez à propos du géocodage inversé ici et modifiez le code en fonction de vos besoins https:// développeurs.google.com/maps/documentation/javascript/geocoding#ReverseGeocoding

Utiliser :getLocations(latlng:GLatLng, callback:function)

Cette méthode effectue un géocodage inversé, la conversion d'une paire latitude/longitude en adresses lisibles par l'homme. getLocations() envoie une requête au service de géocodage de Google, lui demandant de renvoyer l'adresse pour le latlng donné et de transmettre la réponse dans le rappel donné.

Comme cette méthode nécessite un appel à un serveur Google, vous devez également transmettre une méthode de rappel pour gérer la réponse. Cette réponse contiendra un code d'état et, en cas de succès, un ou plusieurs objets Placemark.

Notez que cette méthode peut à la place passer une chaîne adressable, comme indiqué ci-dessus ; dans ce cas, le service effectuera un géocodage standard. Si toutefois le premier argument contient un GLatLng, le service effectuera un reverse-geocode.