2015-06-02 5 views
0

Я могу получить все, кроме featurecClick, чтобы работать.Почему функция featureClick не работает на моей карте cartoDB?

Мои JS:

window.onload = function(){ 
    var cartoDbTableName = 'sipri_import_export_map_1950_2014'; 
    var domId = 'map'; 
    var mapStyle = document.getElementsByClassName('map-style'); 
    var lat = 0; 
    var lon = 0; 
    var zoomLvl = 2; 
    var options = { 
     center: [lat,lon], 
     zoom: zoomLvl 
    }; 
    var mapObject = new L.Map(domId,options); 
    var layerSource = { 
     user_name: 'chrismp', 
     type: 'cartodb', 
     sublayers: [ 
      { 
       sql: "SELECT * FROM "+cartoDbTableName+" WHERE (gwsyear <= 1950 AND gwsyear > 0)", 
       cartocss: mapStyle[0].innerHTML 
      } 
     ] 
    }; 

    L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png') 
     .addTo(mapObject); 

    cartodb.createLayer(mapObject,layerSource) 
     .addTo(mapObject) 
     .on('done',function(layer){ 
       layer.getSubLayer(0).on('featureClick', function(e, latlng, pos, data, subLayerIndex) { 
        console.log(e, latlng, pos, data, subLayerInde); 
       }).on('error',function(err){ 
        console.log('featureClick error: '+err); 
       }); 
     }).on('error',function(err){ 
      console.log(err); 
     }); 
}; 

Мои загрузки карт с моделированием, но мой курсор не переключается на палец-указатель, когда он по стране, так что ничего не происходит, когда я нажимаю его. Что дает?

ответ

0

У меня была аналогичная проблема - я чувствую, что документация CartoDB на это немного пятнистый ... Я считаю, что вам нужно добавить следующее:

cdb.vis.Vis.addInfowindow(map, sublayers, [/*ADD DESIRED INFO FIELDS HERE*/]); 

Так, например:

cartodb.createLayer(mapObject,layerSource) 
    .addTo(mapObject) 
    .on('done',function(layer){ 

      //ADD THESE TWO LINES HERE 
      sublayers = layer.getSubLayer(0); 
      cdb.vis.Vis.addInfowindow(map, sublayers, [/*ADD DESIRED INFO FIELDS HERE*/]); 


      layer.getSubLayer(0).on('featureClick', function(e, latlng, pos, data, subLayerIndex) { 
       console.log(e, latlng, pos, data, subLayerInde); 
      }).on('error',function(err){ 
       console.log('featureClick error: '+err); 
      }); 
    }) 

Надеюсь, что помогает.