[map]使用google map api 的 GLatLngBounds 找出地图最适的座标与zoom level

找出最适的level与座标


这个案例是这样的。使用者希望在地图载入地目标时候,不管座标在哪里,要一次能看到所有的地标。

这时我们可以这样做。

map.setCenter(new GLatLng(0,0),0);  //要先设定map latlng 和 level
            
bounds = new GLatLngBounds();

在地图初始的时候,我们并不知道待会要加入的地标后最适合的地图座标与level,所以我们先给他一个最大的初始值。一定要先给初始值,否则下一句的建立GLatLngBounds对象的时候会发生错误。

for(var i = 0; i < points.length; i++)
...{
    bounds.extend(new GLatLng(lat,lng));      
}

再把你要加入在地图上的marker的座标给GLatLngBounds.extend的方法。

map.setZoom(map.getBoundsZoomLevel(bounds));
map.setCenter(bounds.getCenter());

最后GLatLngBounds丢给GMap2.getBoundsZoomLevel的方法,他就会找出最适的level,再把地图移动到marker们的中心点,这样就可以达到在地图上一次显示所有输入地目标功能了。

顺手再写了一下县市地位、地址定位和经纬度定位的功能在范例里。有兴趣的人请自行连结参考。谢谢大家。

范例

[email protected]

---------------

这是签名档,I love Dotblogs