web-dev-qa-db-ja.com

座標から都市を取得する方法は?

私はグーグルマップAPI3を使用して座標から都市を取得します。 ReverseGeocodingを読みましたが、このタイプの結果から正しい都市値を取得する方法がわかりませんでした: http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452 &sensor = false

8
Tab

このFunktionは、要求された都市の名前を緯度/経度で返します。このスクリプトは2012年の終わりからのものであるため、そのときは問題なく動作しました。 APIが何も見つからない場合、「不明」を返します。

function get_api ($lat, $long) {
    $get_API = "http://maps.googleapis.com/maps/api/geocode/json?latlng=";
    $get_API .= round($lat,2).",";
    $get_API .= round($long,2);         

    $jsonfile = file_get_contents($get_API.'&sensor=false');
    $jsonarray = json_decode($jsonfile);        

    if (isset($jsonarray->results[1]->address_components[1]->long_name)) {
        return($jsonarray->results[1]->address_components[1]->long_name);
    }
    else {
        return('Unknown');
    }
}

編集:とjquery。

<p id="city"></p>

<script>
$(document).ready( function () {    
    // define lat / long
    var lat = 37.42;
    var long = -122.08;

    $.ajax({
        type: 'GET',
        dataType: "json",
        url: "http://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+long+"&sensor=false",
        data: {},
        success: function(data) {
            $('#city').html(data);
            $.each( data['results'],function(i, val) {
                $.each( val['address_components'],function(i, val) {
                    if (val['types'] == "locality,political") {
                        if (val['long_name']!="") {
                            $('#city').html(val['long_name']);
                        }
                        else {
                            $('#city').html("unknown");
                        }
                        console.log(i+", " + val['long_name']);
                        console.log(i+", " + val['types']);
                    }
                });
            });
            console.log('Success');
        },
        error: function () { console.log('error'); } 
    }); 
});
</script>
17
de_nuit

HTML5ページでは、次のように都市名を取得できます。

<script src="//maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>
<script>
        (function() {

            if(!!navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function(position) {

                  var geocoder = new google.maps.Geocoder();
                  var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

                  console.log(position.coords.latitude + ', ' + position.coords.longitude);

                  geocoder.geocode({'latLng': geolocate}, function(results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                       var result;
                       if (results.length > 1) {
                         result = results[1];
                       } else {
                         result = results[0];
                       }
                       //console.log(result);
                       console.log(result.address_components[2].long_name + ', ' + result.address_components[3].long_name);

                     }  
                  });    
                });
</script>
3
San