Google Mapでマップ領域よりも少し小さい領域を計算する

Google Mapでマップ領域よりも少し小さい領域を計算する方法。

地図のバウンズを取得する時に,map.getBounds()とするとトンデモない値が返ってくる。多分クリッピングで見えてない部分がかなりあるのだと思われ。

そこでまず,map.getVisibleRect()として見えている部分のバウンズを取得する必要がある。

次に混乱するのは,左上(Top-Left)と右下(Bottom-Right)のポイントではなく,左下(Bottom-Left)と右上(Top-Right)のポイントが必要であるところ。

また,LatLngBoundsの引数の順番にも混乱させられる。LatLngBounds(sw, ne)だ。LatLngBounds(ne, sw)ではない事に注意。

//ビューポートより少し小さい領域 
var rect:Rectangle = map.getVisibleRect(this);
rect.inflate(-20, -20);

//左下(South-West)
var pbl:Point = new Point(rect.left, rect.bottom);
var sw:LatLng = map.fromViewportToLatLng(pbl);

//右上(North-East)
var ptr:Point = new Point(rect.right, rect.top);
var ne:LatLng = map.fromViewportToLatLng(ptr);

//ビューポートより少し小さいLatLngBounds
var latLngBounds:LatLngBounds = new LatLngBounds(sw, ne);

コメント

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?