在前面的几篇博文中我们讲到如何在Windows与Liunx下导入OpenStreetMap地图数据,接下来我们队导入的数据该怎么使用进行学习。

利用OpenStreetMap进行地址解析

由于谷歌地图的地址解析是按调用次数收费的,而且费用还不低,作为像我们这样的中小型车联网智能硬件提供商来说这个费用是很难承受。有人会问为什么不能使用百度与高德地图呢,就百度地图而言,目前虽然也支持很多国外国家定位,但是效果不是很好,第一定位不准,第二地址解析名称不对。高德就不用说了,高德地图目前只能在国内使用。

如何摆脱这个困境,似乎成为了我们这些中小型车联网服务提供商需要面对的一个重要的问题。就目前而言,在国外能达到谷歌对国家区域的覆盖以及解析准确度,目前只有OpenStreetMap可以做到。我之前对国外几个地区的地址解析进行了对比,发现很多地方,OpenStreetMap解析的精确更好。

OSM逆地理服务器搭建(三)之国外地址解析_服务器搭建

OSM逆地理服务器搭建(二)之OSM地图服务器搭建博文中也有提到如何使用搭建起来的OpenStreetMap服务。

http://你服务的IP地址/nominatim/reverse?format=jsonv2&accept-language=en&lat=你的纬度值(如上述表格第一行中的-5.755867) &lon=你的经度值(如上述表格第一行中的34.829398)

得到的结果如下所示:

OSM逆地理服务器搭建(三)之国外地址解析_数据_02

返回的是Json格式的数据,一般我们只需要取display_name的内容即可。即:T3, Muhalala, Manyoni, Singida, Central Zone, Tanzania

国外客户如何使用我们的地图服务

由于我国对外带宽很少,我们很难访问到国外的网站,相应的在国外也很难访问到国内的网站,这样以来我们搭建的地图服务岂不是不能使用?如果有条件的情况下,大家可以购买云服务器来进行搭建,例如:阿里云,亚马逊等等。不过这样的一台云服务器价格保守估计在每年5~6万RMB的费用。下面我说一下,我当时是怎么做到的。

我们公司的服务器使用的是阿里云,因为对国外提供服务,所以当时我们在系统部署的时候,在华南一区,以及香港区域都有创建ECS,国外客户访问的是我们香港的ECS,国内客户访问的是华南一区的。

然后我讲你地理服务进行了封装与后台接口一起发布到了服务器,这样国外客户进行翻地理的时候会先请求香港的服务器,然后通过香港服务器的后台再请求到我搭建的这台OpenStreetMap服务器上。其实,说白了就是进行了一次中转。

目前而言,客户都能正常使用,后面我在考虑是不是地图展示方面也将谷歌替换成OpenStreetMap。这样以来就可以完全摆脱谷歌的限制。