Вопрос

У меня возникли некоторые проблемы с 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 карт становится немного странным;)

Спасибо за помощь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top