Google Maps API-类GLatLngBounds的问题
时间:2020-03-05 18:40:49 来源:igfitidea点击:
我在使用Google Maps API时遇到了一些麻烦。我有一个数组,其中保存着我创建的用于存储点的对象。
我的数组和类:
var tPoints = []; function tPoint(name) { var id = name; var points = []; var pointsCount = 0; ... this.getHeadPoint = function() { return points[pointsCount-1]; } }
tPoint包含GLatLng点的数组。我想编写一个函数来返回GLatLngBounds对象,该对象从当前地图边界扩展为显示所有HeadPoints。
这是我到目前为止所拥有的。
function getBounds() { var mBound = map.getBounds(); for (var i = 0; i < tPoints.length; i++) { alert(mBound.getSouthWest().lat() + "," + mBound.getSouthWest().lng()); alert(mBound.getNorthEast().lat() + "," + mBound.getNorthEast().lng()); currPoint = trackMarkers[i].getHeadPoint(); if (!mBound.containsLatLng(currPoint)) { mBound.extend(currPoint); } } return mBound; }
它将为警报返回这些值。 (通常在美国)
"19.64258,NaN" "52.69636,NaN" "i=0" "19.64258,NaN" "52.69636,-117.20701" "i=1"
我不知道为什么我要回NaN。
当我使用边界获取缩放级别时,我认为NaN值导致map.getBoundsZoomLevel(bounds)返回0,这是不正确的。我使用GLatLngBounds是否正确?
解决方案
回答
谷歌地图示例正在使用此代码...
var bounds = map.getBounds(); var southWest = bounds.getSouthWest(); var northEast = bounds.getNorthEast(); var lngSpan = northEast.lng() - southWest.lng(); var latSpan = northEast.lat() - southWest.lat();
...这会将SouthWest / NorthEast边界放入变量中,然后再尝试获取各个lng / lat坐标。也许"嵌套"的评估会引起问题。是否尝试过细粒度的方法来查看是否获得了所需的数据?
回答
我也通过Google搜索找到了该示例,并进行了尝试。那不是问题。
我发现了我的错误。没有人能够解决这个问题。事实证明,就在我测试边界之前,我已经用错误的数据将地图居中。我做了类似" lngSpan = northEast.lng()southWest.lng();"的事情,但是JavaScript将我的var解释为字符串。因此,((maxLng-minLng)/ 2 + minLng会以类似" lng"的形式返回" 20.456-116.1178"。我将地图集中在
var centerPoint = new GLatLng(setLat,setLng);`之后,地图API有点奇怪;)
谢谢帮助。