1
我正在將我的網站從Google地圖轉換爲單張/ openstreetmap。在網站上,搜索結果在地圖上顯示爲標記。結果可以有一個標記,或10或200.這一切都很好,很好。但是當結果有多個標記時,我無法將它縮放/放大。相反,它只是放大一個(可能是因爲我把map.setView放大到18!)。縮放以適合leaflet.js標記
在我的情況下,是否有替代使用map.setView?我不想在所有情況下將縮放比例設置爲18。但希望縮放只適合內容。我知道這裏有一些類似的問題,但是他們沒有幫助,因爲我不知道如何用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();
}
}
與谷歌地圖,我用這個:
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未定義」或「TypeError:this._northEast未定義」。我正在使用cdn中的leaflet-0.7.3。 – Ganberry
設置一個例子來說明你的問題,否則無法猜測。 –