座標変換のサンプル


(1)地図をドラッグして、マーカーの位置をずらしてください。
(2)マーカーをクリックすると、その位置にツールチップを表示します。
<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
      function init(){
        var mapDiv = document.getElementById("mapDiv");
        mapDiv.style.width = "500px";
        mapDiv.style.height = "500px";
        
        var toolTip = document.createElement("span");
        toolTip.style.position = "absolute";
        toolTip.style.zIndex = 2;
        toolTip.style.padding = "0.2em";
        toolTip.style.backgroundColor = "white";
        toolTip.style.border = "red 1px solid";
        document.getElementsByTagName("body")[0].appendChild(toolTip);
        
        var point = new google.maps.LatLng(35.658609, 139.745447);
        var map = new google.maps.Map(mapDiv, {
          zoom : 8,
          center : point,
          mapTypeId : google.maps.MapTypeId.ROADMAP
        });
        
        var projection = null;
        google.maps.event.addListener(map, "projection_changed", function(){
          projection = map.getProjection();
        });
        
        var marker = createMarker(map, point, "Hello");
        google.maps.event.addListener(marker, "click", function(mouseEvt) {
          //マーカーの緯度経度を世界座標に変換する
          var latLngChoord = projection.fromLatLngToPoint(mouseEvt.latLng);
          
          //地図の左上端を世界座標に変換する
          var bounds = map.getBounds();
          var sw = bounds.getSouthWest();
          var ne = bounds.getNorthEast();
          var nw = new google.maps.LatLng(ne.lat(), sw.lng());
          var nwChoord = projection.fromLatLngToPoint(nw);
          
          //差分を求めて、世界座標をMapDivの座標にする
          var world = Math.pow(2, map.getZoom()); 
          var x = (latLngChoord.x - nwChoord.x)  * world;
          var y = (latLngChoord.y - nwChoord.y)  * world;
          
          //MapDivのオフセット位置を増分
          x += mapDiv.offsetLeft;
          y += mapDiv.offsetTop;
          
          //ツールチップを表示
          toolTip.style.left = x + "px";
          toolTip.style.top = y + "px";
          toolTip.innerText = "(" + x + "px, " + y + "px)";
        });
      }
      function createMarker(map, position, text) {
        var marker = new google.maps.Marker({
          position : position,
          map : map
        });
        return marker;
      }
      window.onload = init;
    </script>
  </head>
  <body>
    <div id="mapDiv"></div>
  </body>
</html>




サイト内検索
Google Maps APIプログラミングガイド

Google Maps API Expert 4人が共著で執筆。中級者向けに実用に役立つサンプルを中心に紹介! スマートフォン時代に合わせたGoogle Maps APIの使い方も掲載。
詳しくはこちら
Google Maps APIプログラミング入門
Google Maps APIプログラミング入門
全480ページ。Google Maps API ver.2, ver.3, for Flash, Static Maps API v2, Google Maps API Primery, ライセンス…など、Google Maps APIに関連する幅広い内容の本を書きました。
このサイトで公開しているサンプルはもちろん、本のために作ったサンプルも満載です。
詳しくはこちら