3

我在使用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

4

2 回答 2

1

谷歌地图示例正在使用此代码...

var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();

...在尝试获取单个 lng/lat 坐标之前,将西南/东北边界放入变量中。也许“嵌套”评估会导致问题。是否尝试过细粒度的方法来查看是否获得了所需的数据?

于 2008-08-19T18:46:25.670 回答
1

我也通过我的谷歌搜索找到了这个例子,并且确实使用了它。那不是问题。

我发现了我的错误。没有人能够解决这个问题。事实证明,就在我测试我的界限之前,我已经将我的地图与不良数据居中。我做了类似的事情,lngSpan = northEast.lng() - southWest.lng();但是 JavaScript 将我的 var 解释为字符串。所以返回(maxLng-minLng)/2 + minLng类似于"20.456-116.1178". lng我将我的地图集中var centerPoint = new GLatLng(setLat, setLng);在上面,然后地图 API 变得有点奇怪;)

不过感谢您的帮助。

于 2008-08-19T21:29:05.187 回答