2015-10-09 2 views
-1

Я хотел бы нарисовать только один круг (Google.Maps.Circle), когда пользователи нажимают на точку (слой Cartodb), возможно, последний обратный круг может автоматически удаляться. Это мой код:Только один круг для одного щелчка по точке - Карты Google Api - Cartodb

//CARTODB layer 
     var cartoLayer = cartodb.createLayer(map, { 
     user_name: 'username', 
     type: 'namedmap', 
     named_map: { 
     name: "namemap", 
     layers: [{ 
     layer_name: "t", 
     interactivity: "cartodb_id, name, coordinateuncertaintyinmeters, class" 
     }] 
     } 
     }); 
     cartoLayer.addTo(map) 
     .done(function(layer) { 
      layer.getSubLayer(0).setInteraction(true); 
      layer.setZIndex(9); 

     // on mouseover 
      layer.getSubLayer(0).on('featureOver', function(e, pos, pixel, data) { 
     // print data to console log 
      console.log("Event #" + data.cartodb_id + ", Name " + data.name + ", Clase: " + data.class+ ",Incertidumbre(m.) " + data.coordinateuncertaintyinmeters); 
      }); 

     layer.on('featureClick', function(e, latlng, pos, data) { 

       //DRAW A CIRCLE WHEN CLICK ON ONE POINT 

         circle = L.circle(latlng, data.coordinateuncertaintyinmeters, { 
         color: 'red', 
         fillColor: '#f03', 
         fillOpacity: 0.5 
        }).addTo(map); 
      }); 
     // show infowindows on click 
     cdb.vis.Vis.addInfowindow(map, layer.getSubLayer(0), ['cartodb_id','name', 'coordinateuncertaintyinmeters', 'class']); 
     }); 

Большое спасибо!

ответ

0

Трудно понять, каков ваш вопрос ... вам нужна помощь в удалении существующего круга, когда пользователь нажимает на карту? Я предполагаю, что это так. Должно быть простое исправление - просто объявить «круг» вар и добавить, если заявление:

layer.on('featureClick', function(e, latlng, pos, data) { 

     //DECLARE VAR HERE 
     var circle = L.circle(latlng, data.coordinateuncertaintyinmeters, {color: 'red', fillColor: '#f03', fillOpacity: 0.5}); 

     //ADD THIS IF STATEMENT 
     if (circle){ 
     map.removeLayer(circle); 
     } 
     else{ 
     circle.addTo(map); 
     }; 
     }); 

Ну во всяком случае, не уверен, что это именно то, что вы хотите, но надеюсь, что это помогает.