首页 / 浏览问题 / WebGIS / 问题详情
自定义绘制点报错
20EXP 2023年09月14日
使用产品:iserver 11i 操作系统:win10x64 数据类型: postgre sql 问题详细描述:1、

this.map.on('click', function(e) {

  this.pointlayer = L.marker([e.latlng.lat, e.latlng.lng], {icon: Icon}).addTo(this.map)

})

报错:Uncaught TypeError:Cannot read property 'addLayer' of undefined at NewClass.addTo

问题重现步骤: 1.

1个回答

您好,

这个错误是因为在你的代码中,'addTo' 方法被调用时没有正确指定要添加到的地图对象,无法判断this指代的到底是什么,请保证正确的地图对象引用。

建议您截图代码的上下文以便更好判断问题。

希望可以帮助到您!
460EXP 2023年09月14日
怎么让他点击后删除上一个点击,只留下这一次点击,每点击一次,地图上只留一个标注点
每次触发点击之前,删除之前加在地图上的marker就行了。例如:

var marker;

map.removeLayer(marker);

marker = L.marker(latlng).addTo(this.map);

把他俩一起写在你的点击事件里面。
这个解决了,但有个问题,第一次点击绘制一个标注点后缩放地图不会报错,只要不是第一次点击,之后点击生成的点,缩放地图报错:Uncaught TypeError:Cannot read property '_latLngToNewLayerPoint' of null at NewClass.animateZoom
您好,根据您的描述,可能是因为第一次点击绘制标注点之后,虽然移除了地图上的marker,但没有将其重新赋值为新的marker添加到地图。你试试这样可行不:

if (!marker) {

marker = L.marker(latlng).addTo(this.map);

} else {

// 移除旧的标注点

this.map.removeLayer(marker);

// 添加新的标注点

marker = L.marker(latlng).addTo(this.map);

}
...