Google Mapでマップ領域よりも少し小さい領域を計算する
Google Mapでマップ領域よりも少し小さい領域を計算する方法。
地図のバウンズを取得する時に,map.getBounds()とするとトンデモない値が返ってくる。多分クリッピングで見えてない部分がかなりあるのだと思われ。
そこでまず,map.getVisibleRect()として見えている部分のバウンズを取得する必要がある。
次に混乱するのは,左上(Top-Left)と右下(Bottom-Right)のポイントではなく,左下(Bottom-Left)と右上(Top-Right)のポイントが必要であるところ。
また,LatLngBoundsの引数の順番にも混乱させられる。LatLngBounds(sw, ne)だ。LatLngBounds(ne, sw)ではない事に注意。
地図のバウンズを取得する時に,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);
コメント
コメントを投稿