Javascript карта в листовке, как обновить
У меня есть базовая программа geoJson в javascript с помощью API-интерфейса.
<html>
<head>
<link rel="stylesheet" href="#" onclick="location.href='http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css'; return false;" />
<script src="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.js"></script>
<script src="india.js" type="text/javascript"></script>
</head>
<body>
<div id = "map1" style="width: 1100px; height: 400px"> </div>
<script>
var area = L.map('map1', {center: [27.8800,78.0800], zoom: 4 });
L.tileLayer('http://a.tiles.mapbox.com/v3/raj333.map-gugr5h08/{z}/{x}/{y}.png').addTo(area);
var indiaLayer= L.geoJson(india, {style: {weight: 2,
opacity: 1,
color: 'white',
dashArray: '3',
fillOpacity: 0.1}});
area.addLayer(indiaLayer);
function clicked(){
this.options.style.fillOpacity = 0.8;
//how to refresh layer in the given map
}
indiaLayer.on('click', clicked);
</script>
</body>
</html>
проблема в том, как я автоматически обновляю содержимое слоя на карте.
пример здесь
function clicked(){
indiaLayer.style.fillOpacity = 0.8;
//how to refresh layer in the given map
}
indiaLayer.on('click', clicked);
когда пользователь нажимает на indiaLayer, переменная fillOpacity изменяется, но не отражается на карте, которая понимается, так как я не обновляю карту. Я не знаю, как это сделать.
пожалуйста, помогите
P/s: это функции, доступные для объекта indiaLayer (т.е. этот объект внутри функции щелчка... какой из них использовать для этой цели или не существует)
Вы можете проверить список доступных методов GEOJson в Документация Leaflef Это ссылка на v.0.7.7, которая является ближайший доступный для использования в этом примере.
Ответы
Ответ 1
В прошлый раз, когда я использовал
map._onResize();
и это поможет мне обновить карту. Может быть, немного взломать, но он работает.
В вашем коде будет area._onResize()
P.S: Возможно, вам стоит попробовать изменить способ установки нового значения непрозрачности - попробуйте изменить
function clicked(){
this.options.style.fillOpacity = 0.8;
}
к этому
function clicked(){
this.setStyle({fillOpacity: 0.2});
}
Ответ 2
map.invalidateSize();
map._onResize() - это взлом, и нет гарантии, что он не будет удален в будущих версиях.
Ответ 3
area.fitBounds(area.getBounds());