API Карт Google - проблемы с классом GLatLngBounds

javascript google-maps

4384 просмотра

3 ответа

9847 Репутация автора

У меня проблемы с 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 (bounds), чтобы вернуть 0, что является неправильным. Я неправильно использую GLatLngBounds ?

Автор: Bernie Perez Источник Размещён: 19.08.2008 06:04

Ответы (3)


1 плюс

23259 Репутация автора

Решение

Образец карты 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();

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

Автор: Dillie-O Размещён: 19.08.2008 06:46

1 плюс

9847 Репутация автора

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

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

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

Автор: Bernie Perez Размещён: 19.08.2008 09:29

1 плюс

21 Репутация автора

Образец карты 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();

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

вы можете попробовать это!

Автор: hardik virani Размещён: 17.11.2018 04:29
Вопросы из категории :
32x32