2013-09-20 3 views
0

У меня, похоже, возникают проблемы с повторной инициализацией объекта карты листов. Я запускаю функцию init(), которая начинается с инициализации карты, добавления слоя и слоя с полигонами, а затем добавления подслоев, которые окрашивают полигоны в соответствии с запросом ST_Intersects. Проблема в том, что эта функция привязана к вызову AJAX, вызванному событием клика, но не обновляет данные в соответствии с новыми параметрами, отправленными на карту. Я не думаю, что я объясняю это очень хорошо, так что здесь немного мой код:Нужно перерисовать карту новыми данными (в сочетании с CartoDB.js)

success: function(data) { 

       init(data); 
} 



function init(data){ 
    // initiate leaflet map 
    alert("start"); 
    var map = L.map('cartodb-map').setView([40.750028, -73.926768], 11); 
    alert("map made"); 

//create sublayers, etc 
} 

Что происходит, что первый раз инициализация выполняется, как «начала» и «карта из» работает оповещение , и карта сделана в соответствии с данными. Любые дальнейшие вызовы init просто предупреждений с «start» и «map made» никогда не предупреждаются, поэтому я считаю, что проблема заключается в повторной инициализации карты листовки. Что мне делать, чтобы это исправить?

ответ

1

Не уверен проблема, не видя больше своего кода, но вы можете попробовать позвонить map.remove(); второй раз. Таким образом:

if (map) { 
    map.remove(); 
    // add in new map initialization here 
} else { 
    var map = ... 
}