2013-06-18 2 views
3

Я полностью застреваю при решении странной ошибки карты при использовании Leaflet.js и Cloudmade в приложении Angular and Rails. Карты работают почти на каждой карте, за исключением нескольких карт на стадии (отлично подходит для разработки), где я получаю: «Недоступная ошибка: недопустимый объект LatLng, который, по его словам, не определен. Я получаю лат и долго от JSON, и я проверил, что lat и long присутствуют в JSON, и тот же lat/long работает для подобных карт. В исходном коде Leaflet говорится, что ошибка указана, когда lat/long - Not-A-Number, но я смущен тем, что lat/long не являются числами, когда они находятся в моем json. Вот трассировки стека я получаю в Chrome:Недопустимый объект LatLng с лифтовой картой

Uncaught Error: Invalid LatLng object: (undefined, undefined) 
n.LatLng 
n.latLng 
n.Map.n.Class.extend.project 
n.Map.n.Class.extend._getNewTopLeftPoint 
n.Map.n.Class.extend._resetView 
n.Map.include.setView 
(anonymous function) 
jQuery.event.dispatch 
elemData.handle.eventHandle 
jQuery.event.trigger 
(anonymous function) 
jQuery.extend.each 
jQuery.fn.jQuery.each 
jQuery.fn.extend.trigger 
(anonymous function) 
next 
Tab.activate 
Tab.show 
(anonymous function) 
jQuery.extend.each 
jQuery.fn.jQuery.each 
$.fn.tab 
(anonymous function) 
jQuery.event.dispatch 
elemData.handle.eventHandle 

Немного кода здесь:

var map = L.map('map').setView([$scope.lat, $scope.long], 11); 
L.tileLayer('http://{s}.tile.cloudmade.com/API-key/997/256/{z}/{x}/{y}.png', { 
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>', 
    maxZoom: 18 
}).addTo(map); 

Ссылка заменяется мой API ключ конечно. Я использую последнюю стабильную версию Leaflet, которая содержит this code fix, что было лучшим результатом поиска Google, который я мог найти. Моя карта находится внутри содержимого с вкладками, используемого из Bootstrap. Какие проблемы могут быть здесь? Или что мне делать, чтобы отладить это? Любая помощь будет принята с благодарностью, и я с удовольствием предоставил вам дополнительную информацию.

+2

Попробуйте remplace [$ scope.lat, $ scope.long] по [51,505, - 0.09], чтобы узнать, что произойдет. –

ответ

5

Не уверен, что у вас это работает, но у меня была аналогичная проблема с строками lat/lng, такими как «53.12345», «-1.6789». Если это так, либо изменить данные, возвращаемые в строке или разборе возвращаемых строк в поплавок, такие как:

var marker = { 
         lat: parseFloat(hotelLat), 
         lng: parseFloat(hotelLng), 
... 
}