Я конвертирую свой сайт с карт google в листовку/openstreetmap. На сайте результаты поиска отображаются как маркеры на карте. Результаты могут иметь один маркер, или 10, или 200. Это все отлично и отлично. Но когда результаты имеют несколько маркеров, у меня возникают проблемы с его увеличением/соответствием всем им. Вместо этого он просто увеличивает масштаб одного (возможно, потому, что у меня есть масштаб в map.setView до 18!).Масштабировать метку leaflet.js
В моем случае есть ли альтернатива использованию map.setView? Во всех случаях я не хочу установить масштаб до 18; но хотелось бы, чтобы зум просто соответствовал содержимому. Я знаю, что есть такие же вопросы о SO, но они не помогают, поскольку я не знаю, как заменить withe map.setView тем, что не делает жесткого кода масштабирования. Вот вся моя функция:
function showLocations(ids, lats, lons, contents) {
locationIDs = ids;
infoWindows = new Array();
markers = new Array();
map = new L.Map('map_canvas');
var osmUrl='http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
var osmAttrib='Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors';
var osm = new L.TileLayer(osmUrl, {minZoom: 1, maxZoom: 19, attribution: osmAttrib});
for (i in ids) {
var infoWindow = L.popup()
.setContent(contents[i]);
map.setView(new L.LatLng(lats[i], lons[i]),18);
map.addLayer(osm);
L.marker([lats[i], lons[i]]).addTo(map)
.bindPopup(infoWindow)
.openPopup();
}
}
С картами Google, я использую это:
markers.push(marker);
bounds.extend(latlng);
if (contents.length === 1) {
map.setZoom(18);
map.setCenter(new google.maps.LatLng(lats[0], lons[0]));
} else {
map.fitBounds(bounds);
}
Спасибо!
Спасибо, тонна, Алекс! Я еще не подключил его, но это выглядит великолепно. Я ценю дополнительные советы. Одна из проблем, которую я иногда испытываю при чтении учебников/примеров, заключается в том, что они не всегда показывают полную функцию (что имеет смысл, учитывая, что каждая ситуация отличается), и такие вещи, как fitBounds и LatLngBounds, не играют приятной с остальными моими вещами , Я еще недостаточно умел самостоятельно разбираться, хотя и стараюсь! – Ganberry
Знаете ли вы, что это значит, когда я получаю ошибки leaflet.js? Например, «TypeError: o.DomUtil.getPosition (...) не определено» или «TypeError: this._startPos не определено» или «ТипError: this._northEast не определен». Я использую буклет-0.7.3 из cdn. – Ganberry
Настройте пример, который иллюстрирует вашу проблему, в противном случае невозможно догадаться. –