googlemaps api v3 で 下記のこと(v2用)と同じ事をしたいのですがズバリコードを教えて下さい。


マップ上の上からXXピクセル、左からXXピクセルの位置の緯度経度を知りたいと考えています。

海外サイトも探しましたが議論している様なページしか見付けられませんでした。

var latlng = map.fromContainerPixelToLatLng(new GPoint(50, 100));
var lat = latlng.lat();
var lng = latlng.lng();

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/11/16 17:53:51
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

動作検証してないのですが、ここのやり方で取り出せると思います。
http://shahmirj.com/blog/pixel-to-latlng-google-maps-api-v

var map = new google.maps.Map(
    ...
);

// OverlayView を作る
var overlay = new google.maps.OverlayView();
overlay.draw = function() {};   // 描画の必要が無いので draw を何もしない関数にする
overlay.setMap(map);            // マップとひも付ける

// MapCanvasProjection を取得して、fromContainerPixelToLatLng() を呼び出す
var coordinates = overlay.getProjection().fromContainerPixelToLatLng(
    new google.maps.Point(50, 100)
);

// 緯度と経度を取り出す
var lat = coordinates.lat;
var lng = coordinates.lng;


一応、公式リファレンスの URL を。
https://developers.google.com/maps/documentation/javascript/reference?hl=ja#OverlayView
https://developers.google.com/maps/documentation/javascript/reference?hl=ja#MapCanvasProjection

他2件のコメントを見る
id:a-kuma3

コメントで書いた stackoverflow のコードにある、OverlayView と Map の紐付けを解除するのを試してみてはどうでしょうか?

function PixelToLatLng(x,y){
    var overlay = new google.maps.OverlayView()
    overlay.setMap(map);
    var LatLng = overlay.getProjection().fromContainerPixelToLatLng(new google.maps.Point(x,y));        
    overlay.setMap(null); delete overlay;    // ★コレ!
    return LatLng;
}
2013/11/10 21:36:48
id:worldtravel

ありがとうございます。

やはり場合によって挙動がおかしくなります。
ズームした瞬間にマップを動かせなくなる、などです。
ズームを使わなければ、問題なく動いている感じです。

2013/11/12 00:15:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません