Сведения о вопросе

Kimsanov

21:06, 1st October, 2020

Теги

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

Просмотров: 476   Ответов: 2

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

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

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;
}

Который возвращает эти значения для предупреждения. (Как правило, над US)


"19.64258,NaN"
"52.69636,NaN"
"i=0"
"19.64258,NaN"
"52.69636,-117.20701"
"i=1"


Я не знаю, почему я получаю NaN обратно. Когда я использую границы, чтобы получить уровень масштабирования, я думаю, что значение NaN вызывает map.getBoundsZoomLevel(bounds), чтобы вернуть 0, что неверно. Я использую GLatLngBounds неправильно?




  Сведения об ответе

ЯЯ__4

08:47, 8th August, 2020

Пример 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();
...

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


  Сведения об ответе

DO__IT

17:54, 26th August, 2020

Я нашел этот пример через мои поиски в Google тоже и действительно играл с ним. Но проблема была не в этом.

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться