Google Maps API - Проблемы с классом GLatLngBounds - PullRequest
2 голосов
/ 19 августа 2008

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

Ответы [ 2 ]

1 голос
/ 20 августа 2008

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

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

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

1 голос
/ 19 августа 2008

Пример 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. Может быть, что-то с «вложенными» оценками вызывает проблемы. Испытали гранулярный подход, чтобы увидеть, получаете ли вы нужные данные?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...