2014年6月18日水曜日

Google Maps API V3 逆ジオコーディング

参考
https://developers.google.com/maps/documentation/javascript/geocoding?hl=ja
http://pcrice.blog129.fc2.com/blog-entry-161.html
https://sites.google.com/site/gmapsapi3/Home/services
http://negimemo.net/1860




現在地の緯度・経度を取得してそれを引数に都道府県を特定したかったので
上記を参考に取得確認できるようなものをてけとーにかいたのでメモ

<html>
<body>
<head>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
</head>

<script type="text/javascript">
if (navigator.geolocation) {

    // 現在の位置情報を取得
    navigator.geolocation.getCurrentPosition(

      // (1)位置情報の取得に成功した場合
      function (pos){
        reversegeocoding(pos.coords.latitude,pos.coords.longitude);
      },
      // (2)位置情報の取得に失敗した場合
      function (error) {
        var message = "";

        switch (error.code) {

          // 位置情報が取得できない場合
          case error.POSITION_UNAVAILABLE:
            message = "位置情報の取得ができませんでした。";
            break;

          // Geolocationの使用が許可されない場合
          case error.PERMISSION_DENIED:
            message = "位置情報取得の使用許可がされませんでした。";
            break;

          // タイムアウトした場合
          case error.PERMISSION_DENIED_TIMEOUT:
            message = "位置情報取得中にタイムアウトしました。";
            break;
        }
                window.alert(message);
        }
    );
} else {
    window.alert("本ブラウザではGeolocationが使えません");
}

function reversegeocoding(lat,lng){

    var geocoder;
        alert("id: " + lat); // 緯度
        alert("keido: " + lng); // 経度
        geocoder = new google.maps.Geocoder();
        var latlng = new google.maps.LatLng(lat,lng);

if (geocoder) {
            geocoder.geocode({'latLng': latlng}, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                        for (var r = 0; r < results.length; r ++) {
                                var end = 0;
                                var address = results[r].address_components;
                                for (var i = 0; i < address.length; i++) {
                                        switch (address[i].types[0]) {
                                                case "administrative_area_level_1":
                                                alert(address[i].long_name);
                                                end = 1;
                                                break;
                                        }
                                }
                                if(end == 1){
                                        break;
                                }
                        }

                }else{
                    alert("Geocoder failed due to: " + status);
                }
                });
        }
}
</script>
</body>
</html>

0 件のコメント:

コメントを投稿