map.getCenter.lng () выходит за пределы -180 при непрерывном перетаскивании.Как я могу это остановить? - PullRequest
0 голосов
/ 07 октября 2011

вот мой код:

google.maps.event.addListener(map, 'idle', function(e) {
    console.log(map.getCenter().lng();      
});

при многократном перетаскивании карты по горизонтали создается шаблон, например: 0, -60, -120, -180, -240, -300

Но я надеялся на: 0, -60, -120, -180, 120, 60

Это ошибка в gmaps или нет?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 27 августа 2012

просто обновить это, чтобы добавить ответ отсюда:

http://code.google.com/p/gmaps-api-issues/issues/detail?id=3247

Как и в приведенной выше ссылке, вы можете создать новый объект LatLng, который будет правильно переносить долготу.

var center = map.getCenter();

var wrapped = new google.maps.LatLng(center.lat(), center.lng());

Я обнаружил, что, используя мою собственную математику, разделяющую мои 180, я все равно столкнулся бы с некоторыми надуманными ситуациями, когда перетаскивание пикселя или двух вокруг основного меридиана приводило бы к неправильным измерениям - возможно, мои математические расчеты не были ударными, но в в любом случае - вышесказанное кажется мне лучшим решением.

0 голосов
/ 07 октября 2011

Некоторые скажут, что это ошибка, а другие - что это особенность. Честно говоря, это выглядит как «правильное» поведение, но оно не дает никаких полезных результатов.

Я полагаю, что наиболее распространенный способ обойти эту «особенность» - убедиться, что ваше значение никогда не опускается ниже -180 og выше 180. Простой способ сделать это - всегда совершать вызов:

map.getCenter().lng() % 180;

Это всегда даст вам модуль 180, который является остатком, когда вы вычитаете 180, пока значение не окажется в правильном диапазоне.

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