Подтвердить что ты не робот

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, которая является ближайший доступный для использования в этом примере.

4b9b3361

Ответ 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());