Javascript 点击一个点只需要一个圆圈——谷歌地图Api——Cartodb
我只想画一个圆圈(Google.Maps.circle)当用户点击点(Cartodb层),也许最后画的圆圈可以自动删除。这是我的代码:Javascript 点击一个点只需要一个圆圈——谷歌地图Api——Cartodb,javascript,google-maps,onclick,geometry,cartodb,Javascript,Google Maps,Onclick,Geometry,Cartodb,我只想画一个圆圈(Google.Maps.circle)当用户点击点(Cartodb层),也许最后画的圆圈可以自动删除。这是我的代码: //CARTODB layer var cartoLayer = cartodb.createLayer(map, { user_name: 'username', type: 'namedmap', named_map: { name: "namemap", lay
//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']);
});
非常感谢 很难理解你的问题是什么。。。当用户单击地图时,是否需要帮助删除现有圆圈?我想是这样的。应该是一个简单的修复-只需声明一个“circle”var并添加一个if语句:
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);
};
});
不管怎样,我不确定这是否正是你想要的,但希望能有所帮助