Карта TileMill MapBox перемещается в другой мир без каких-либо маркеров

У меня есть карта, которую я экспортировал из tilemill, сделал карту mapbox и накинул на нее несколько точек. Вид начинается с США с маркером где-то посередине. Если я панорамирую влево до следующего раза, когда увижу США, маркеры исчезнут. Вот код без данных geoJson.

var map = L.mapbox.map('map', 'natecraft1.xdan61or').setView([-102, 39], 4);
map.markerLayer.on('layeradd', function(e) {
  var marker = e.layer;
  var feature = marker.feature;
  var image = feature.properties.images
  // var img = images

  // Create custom popup content
var popupContent = '<img class="pics" src="' + image + '" />'
  marker.bindPopup(popupContent,{
    closeButton: false,
    minWidth: 320,
    offset: [180, 20]
  });
});

map.markerLayer.setGeoJSON(geoJson);

map.markerLayer.on('click', function(e) {
  e.layer.openPopup(); 
var lat = e.layer.getLatLng().lat;
  var lng = e.layer.getLatLng().lng;

  map.panTo([lat+5, lng+5], 2);

});
  map.markerLayer.on('', function(e) {
  e.layer.closePopup();
});

person natecraft1    schedule 17.12.2013    source источник


Ответы (1)


Ваш слой листов обтекает земной шар по координатам за пределами диапазона (-180, 180) . Лучший вариант — установить параметр maxBounds, чтобы пользователи не перемещались за пределы этой карты и просто возвращались назад.

var map = L.mapbox.map('map', 'examples.map-9ijuk24y').setView([0,0], 2);
var layer = L.mapbox.tileLayer('examples.map-9ijuk24y', {
  noWrap: true,
  minZoom: 3
}).addTo(map);
map.options.maxBounds = map.getBounds();

Вот демонстрация того, как это будет выглядеть.

person geraldarthur    schedule 18.12.2013