有没有办法确定坐标是否在融合表层内?我尝试用一些自己开发的方法做到这一点,但我正在测试的大约6%的位置返回错误的结果。其中一项结果表明格拉斯哥不在苏格兰。
我可以查询this Fusion Table并询问格拉斯哥是否在苏格兰吗?最好返回一个布尔值。
55.855513, -4.252649
Geometry where ‘NAME’ = ‘Scotland’
Geometry
1d5LmqKYvkTDxmYK3-9-aQLNz3Z0QAEwqHusAm5w
我想我必须使用ST_CONTAINS
或ST_INTERSECTS
,但我不确定如果它们使用多边形形状。
整体解决方案
使用给定答案中的查询,您可以使用FusionTablesAPI获取多边形的名称。
lat = 55.855513
lng = -4.252649
table = '1d5LmqKYvkTDxmYK3-9-aQLNz3Z0QAEwqHusAm5w'
query = "SELECT NAME FROM #{table} WHERE ST_INTERSECTS(geometry, CIRCLE(LATLNG(#{lat}, #{lng}),1))"
url = "https://www.googleapis.com/fusiontables/v1/query?sql=#{URI.encode(query)}&key=AIzaSyAm9yWCV7JPCTHCJut8whOjARd7pwROFDQ"
这实际上是一个比我开始寻找更好的解决方案。
使用给定答案中的代码突出显示地图上的多边形,这非常棒。此外,postgres
也可以像Dr.Molle在评论中所建议的那样使用。
答案 0 :(得分:3)
您可以这样做(FusionTableLayer示例):
layer = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: tableId,
where: 'ST_INTERSECTS(geometry, CIRCLE(LATLNG(' + lat + ', ' + lng + '),1))',
limit: 1
}
检查几何列中定义的多边形和直径为1米的lat,lng圆的交点。