Google Maps v3 map.getBounds()。containsLatLng不是一个函数

时间:2012-06-05 14:58:48

标签: google-maps google-maps-api-3 google-api google-maps-markers google-maps-api-2

如何在此设置“setMap”功能以将此代码移植到v3?或者将它通常移植到v3 ......

// map recenter,如果element在mapscreen之外

while ((!map.getBounds().containsLatLng(marker.getPosition())) & (showAllCategoryElements == 0)) {
        var newCenterPointLng = (map.getBounds().getCenter().lng() + marker.getPosition().lng()) / 2;
        var newCenterPointLat = (map.getBounds().getCenter().lat() + marker.getPosition().lat()) / 2;
        map.panTo(new google.maps.LatLng(newCenterPointLat, newCenterPointLng));
        map.setCenter(new google.maps.LatLng(newCenterPointLat, newCenterPointLng));
        if (!map.getBounds().containsLatLng(marker.getPosition())){
            map.zoomOut();
        }

这是一个示例http://d.hatena.ne.jp/tsmsogn/20111216/1324026723 一些提示:markus.tao.at/geo/google-maps-api-v3-is-in-town /

我还导入https://github.com/tparkin/Google-Maps-Point-in-Polygon js以获得“containsLatLng”支持

感谢您提供帮助或提示

2 个答案:

答案 0 :(得分:3)

根据API文档,.getbounds()返回google.maps.LatLngBounds而不是maps.Polygon。

由于LatLngBounds具有包含函数,因此您无需额外导入。

map.getBounds().contains(marker.getPosition()) ....

https://developers.google.com/maps/documentation/javascript/reference#LatLngBounds

答案 1 :(得分:2)

在谷歌地图v3中,我们有另一种方法。 这是最好的例子。 https://developers.google.com/maps/documentation/javascript/examples/poly-containsLocation