使用OpenLayers进行地理编码,然后进行手动地图调整和动态表单更新 - 可能吗?

时间:2014-04-10 14:03:16

标签: javascript openlayers geocoding

对于管理工具,我需要设置一个包含以下功能的表单:

  • 输入街道,门牌号码,邮政编码和城市(在单独的表格字段中);此外,在表单中有lat和lon值的两个表单字段
  • "地址解析"按钮,它将对给定地址进行地理编码并显示内联地图,以找到的位置为中心(不发送主窗体!)并将lat和lon值设置为表单字段
  • 地图应该有一个固定的"标记"在中心(平移或缩放地图时不移动)=准确指示视口的中心
  • 用户应该可以平移地图,直到中心("标记")正好位于正确的位置(这需要在+/- 2米处完全调整位置,所以街道地址的简单地理编码请求大多数失败=不够精确)
  • 在平移地图时,lat和lon的值应该动态更新为表单字段
  • 调整位置后,可以发送表格,并将值(包括手动= lat和lon的图形调整值)写入数据库

问题:是否可以通过OpenLayers实现这一点,有人可以帮我展示结果的基本方法吗?我搜索了几天的工作实例,但无法找到。由于使用限制和限制,Google Maps API无法使用。

1 个答案:

答案 0 :(得分:0)

这确实可以使用OpenLayers。但请记住,OpenLayers只是一个用于显示地图图块和标记的库,因此它无法进行地理编码。但您可以使用外部地理编码服务,例如Nominatim,它基于OpenStreetMap数据。

OSM的Nominatim实例也有一些usage limits,因为它运行在捐赠的资源上。但有两种选择:使用不同的实例,例如Nominatim instance provided by MapQuest,其中使用条款不那么严格。或者install your own Nominatim instance根本没有任何限制。