プログラマメモ2 - programmer no memo2

郵便番号から、緯度経度をもとめて、地図の真ん中に設定したいです。 2015/07/05


google map apiです。
郵便番号から、緯度経度をもとめて、地図の真ん中に設定したいです。
コードはかなりわかってないです。

下記のコードは、いろいろ試行錯誤した結果です。



<script type="text/javascript"> var map; function initialize() { var mapOptions = { center: { lat: -34.397, lng: 150.644}, zoom: 13, mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); } google.maps.event.addDomListener(window, 'load', initialize); function show01() { var p = document.getElementById('postalCode'); var pcode = p.value; var geocoderCallback = function( results, status ) { if( status == google.maps.GeocoderStatus.OK ) { var movePos = results[0].geometry.location; console.log(movePos); map.setCenter(movePos); } else { alert(status); } }; var geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': pcode , 'componentRestrictions':{'country':'jp'} , 'language':'ja', 'region': 'JP'} , geocoderCallback); } </script>

ジオコード知っているのならgetLatLngを使うより、直接GLatLngをつくって使ったほうがよいかも。- google map api 2010/05/22

グーグルさんのMap APIです。
GClientGeocoderには、getLatLng(address:String, callback:function) というメソッドがあってそれを使用していました。
でaddressに、例)「35.7524424,139.8022971」とかいうデータを渡して使っていました。
で、この結果で得られる、GLatLngがのlat.lngが僕が期待している値と違う場合がありました。
冷静に考えれば、ジオコードわかってるのなら、検索かけて作る必要がないわけで....

結論ですが、ジオコードがわかってるなら、getLatLngを使わず、直接、GLatLngを作成して、GMarkerを使うべしというわけです。
反省してます。。。

var ss = address.split(",");
var point = new GLatLng(ss[0], ss[1]);
var marker = new GMarker(point);