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有点奇怪;)

谢谢帮助。