Я пытаюсь создать карту и маркеры с всплывающими окнами на маркеры щелчка. Для этого я использую плакат-лист. Все работает нормально, за исключением того, что когда я нажимаю на какой-либо маркер, карта перемещается в какую-то точку, вместо того, чтобы фокусироваться на всплывающем маркере. Но если я изменяю размер браузера (например, восстанавливаю вниз или открываю консоль), тогда он будет работать нормально. У меня есть функция, чтобы получить HTML для всплывающего окна. Вот мой кодLeflet - Нежелательное движение по щелчка маркера
var cloudmadeUrl = 'https://server/tiles/test_format5_set4/tiles_{z}_{y}x{x}.png',marker,
cloudmadeAttribution = '', latlng,
cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 4, attribution: cloudmadeAttribution});
latlng = new L.LatLng(0, 0);
var LeafIcon = L.Icon.extend({
options: {
iconSize: [25, 41], // size of the icon
shadowSize: [50, 64], // size of the shadow
iconAnchor: [22, 94], ///point of the icon which will correspond to marker's location
shadowAnchor: [4, 62], // the same for the shadow
popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
}
});
var completedIcon = new LeafIcon({iconUrl: '../styles/images/marker-icon green.png'});
var startedIcon = new LeafIcon({iconUrl: '../styles/images/marker-icon red.png'});
var createdIcon = new LeafIcon({iconUrl: '../styles/images/marker-icon yellow.png'});
map = new L.Map('table_map', {center : latlng, zoom : 1, layers : [cloudmade]});
ticket_layer.clearLayers();
map.removeLayer(ticket_layer);
for (var m in SOURCE_ARRAY) {
(function (n) {
if (SOURCE_ARRAY.hasOwnProperty(n)) {
createHtmlForPopUp(n, function (data) {
if (SOURCE_ARRAY[n].state.state === "created") {
marker = new L.Marker(new L.LatLng(SOURCE_ARRAY[n].location.x, SOURCE_ARRAY[n].location.y), {icon: createdIcon});
}
else if (SOURCE_ARRAY[n].state.state === "started") {
marker = new L.Marker([SOURCE_ARRAY[n].location.x, SOURCE_ARRAY[n].location.y], {icon: startedIcon});
}
else {
marker = new L.Marker([SOURCE_ARRAY[n].location.x, SOURCE_ARRAY[n].location.y], {icon: completedIcon});
}
marker.bindPopup(data); // calling a function with callback
ticket_layer.addLayer(marker);
});
}
})(m);
} // for loop ends here
map.addLayer(ticket_layer);
вы можете создать http://jsfiddle.net для того же – dreamweiver
я пытался, но он не работает в скрипку. [link] (http://jsfiddle.net/hPkG8/) тот, который я пробовал, но он дает ошибку из самого объекта Leaflet –