Google 地图 API - GLatLngBounds 类的问题
-
08-06-2019 - |
题
我遇到了一些麻烦 谷歌地图 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 就变得有点奇怪了;)
不过还是谢谢你的帮助。