API Карт Google – проблемы с классом GLatLngBounds
-
08-06-2019 - |
Вопрос
У меня возникли некоторые проблемы с API Карт Google.У меня есть массив, в котором хранится объект, который я создал для хранения точек.
Мой массив и класс:
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 неправильно?
Решение
Образец карт Google использует этот код...
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
... который помещает границы юго-запада/северо-востока в переменную перед попыткой получить отдельные координаты долготы/широты.Возможно, что-то связано с «вложенными» оценками, вызывающими проблемы.Пробовали ли вы детальный подход, чтобы увидеть, получаете ли вы нужные данные?
Другие советы
Я тоже нашел этот пример через поиск в Google и поигрался с ним.Проблема была не в этом.
Я нашел свою ошибку.Никто бы не смог решить проблему.Оказывается, прямо перед проверкой границ я центрировал карту с неверными данными.Я сделал что-то вроде lngSpan = northEast.lng() - southWest.lng();
однако JavaScript интерпретировал мою переменную как строку.Так (maxLng-minLng)/2 + minLng
возвращает что-то вроде "20.456-116.1178"
как lng
.Я сосредоточил свою карту на var centerPoint = new GLatLng(setLat, setLng);
и после этого API карт становится немного странным;)
Спасибо за помощь.