代码之家  ›  专栏  ›  技术社区  ›  Bernie Perez

谷歌地图API-GLatLngBounds类的问题

  •  3
  • Bernie Perez  · 技术社区  · 17 年前

    我遇到了一些麻烦 Google Maps API 。我有一个数组,其中包含我创建的用于存储点的ojbect。

    我的数组和类:

    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(边界)返回0,这是不正确的。我在用吗 GLatLng边界 不正确?

    2 回复  |  直到 10 年前
        1
  •  1
  •   Dillie-O    17 年前

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

    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坐标之前,将西南/东北边界放入变量中。也许“嵌套”评估会导致问题。您是否尝试过细粒度方法来查看是否获得了所需的数据?

        2
  •  1
  •   Pure.Krome    15 年前

    我也通过谷歌搜索找到了这个例子,并尝试了一下。这不是问题所在。

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

    不过,谢谢你的帮助。