使用Fusion Tables获取多边形边界并保存到变量的方法咨询
解决Fusion Tables点击多边形获取几何边界的问题
在Fusion Tables的点击事件中,几何列的信息并不存储在e.row对象里——这就是你遇到TypeError: e.row.geometry is undefined的核心原因。e.row仅负责承载表格里的非空间属性列数据,而空间几何数据需要通过事件对象的e.feature属性来获取。
正确的实现代码
你可以通过e.feature.getGeometry()方法直接拿到点击多边形的几何对象,还能根据需求将其转换为常用的空间数据格式(比如GeoJSON、WKT):
// 给FusionTablesLayer绑定点击事件监听 layer.addListener('click', function(e) { // 获取非空间属性(你原来的写法没问题) var vname = e.row['l_name'].value; // 获取点击多边形的几何边界对象 var polygonGeom = e.feature.getGeometry(); // 可选:转换为GeoJSON格式 var geoJsonData = polygonGeom.toGeoJson(); // 可选:转换为WKT格式 var wktData = polygonGeom.toWkt(); // 后续可以用这些变量做存储或其他处理 console.log('当前多边形的GeoJSON:', geoJsonData); });
补充说明
Fusion Tables的事件对象做了明确的职责划分:e.row专门读取表格的普通属性列,而空间几何属于矢量要素的核心属性,因此被归类在e.feature对象下,需要借助Google Maps Geometry类的内置方法来访问和格式转换。
内容的提问来源于stack exchange,提问作者Pixaanch
相关产品推荐
相关产品推荐

