Google Maps API - Проблемы с классом GLatLngBounds

У меня возникли проблемы с API Карт Google . У меня есть массив, который содержит объект, который я создал для хранения точек.

Мой массив и класс:

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, что неверно. Я использую GLatLngBounds неправильно?

19.08.2008 18:04:16
2 ОТВЕТА
РЕШЕНИЕ

Пример Google Maps использует этот код ...

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

... который помещает границы SouthWest / NorthEast в переменную, прежде чем пытаться получить отдельные координаты lng / lat. Может быть, что-то с «вложенными» оценками вызывает проблемы. Испытали гранулярный подход, чтобы увидеть, если вы получаете данные, которые вам нужны?

1
19.08.2008 18:46:25

Я нашел этот пример и в своих поисках в Google и поиграл с ним. Это не было проблемой.

Я нашел свою ошибку. Никто не смог бы решить проблему. Оказывается, прямо перед тем, как я проверю свои границы, я отцентрировал свою карту на неверных данных. Я сделал что-то вроде того, lngSpan = northEast.lng() - southWest.lng();однако JavaScript интерпретировал мой var как строку. Так (maxLng-minLng)/2 + minLngчто возвращает что-то вроде "20.456-116.1178"как lng. Я центрировал свою карту на, var centerPoint = new GLatLng(setLat, setLng);и после этого API карт становится немного странным;)

Спасибо за помощь, хотя.

1
6.08.2010 07:08:50
Вы должны принять свой собственный ответ, так как это было ваше решение
Jon Onstott 7.05.2013 23:09:51