sql >> データベース >  >> RDS >> Mysql

郵便番号から国と都市を自動入力し、その反対側

    *これは非常に簡単です。ユーザーから郵便番号を取得するだけで、GoogleAPIを使用して$countryと$cityを取得できます。ここに例を示します 郵便番号、つまり郵便番号から経度と緯度を取得する方法について説明します。

    $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;
    

    上記の2つの変数$longitudeと$latitudeをdatabase.simpleに挿入できます:) 。次のリンクに移動します https://developers.google.com/マップ/ドキュメント/ジオコーディング/?csw =1

    経度と緯度から国名を取得するには、逆ジオコーディングを使用します。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);
          }
        });
      }
    

    ここでリバースジオコーディングについて読み、必要に応じてコードを変更します https:// developers.google.com/maps/documentation/javascript/geocoding#ReverseGeocoding

    使用:getLocations(latlng:GLatLng、callback:function)

    このメソッドは、緯度と経度のペアを人間が読める形式のアドレスに変換する逆ジオコーディングを実行します。 getLocations()は、Googleジオコーディングサービスにリクエストを送信し、指定された緯度のアドレスを返し、指定されたコールバックで応答を渡すように要求します。

    このメソッドはGoogleサーバーへの呼び出しを必要とするため、応答を処理するためにコールバックメソッドも渡す必要があります。この応答には、ステータスコードが含まれ、成功した場合は1つ以上のPlacemarkオブジェクトが含まれます。

    上記のように、このメソッドは代わりにアドレス可能な文字列を渡す場合があることに注意してください。その場合、サービスは標準の地理コードを実行します。ただし、最初の引数にGLatLngが含まれている場合、サービスは逆ジオコードを実行します。



    1. sql with-recursiveステートメントはどのように解釈されますか?

    2. 電話のSQLvarchar(length)で考慮すべき世界で最も長い電話番号は何ですか

    3. EXPLAINANALYZEを理解する方法

    4. 外部キーをドロップできません