我遇到了一些麻烦 谷歌地图 API. 。我有一个数组,其中包含我创建的用于存储点的对象。

我的数组和类:

var tPoints = [];    
function tPoint(name) {
        var id = name;
        var points = [];
        var pointsCount = 0;
        ...
        this.getHeadPoint = function() { return points[pointsCount-1]; }
    }

tPoint 包含一个数组 格拉特 点。我想写一个函数来返回 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,南”
“52.69636,南”
“我=0”
“19.64258,南”
"52.69636,-117.20701"
“我=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();

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

其他提示

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

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

不过还是谢谢你的帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top