2 a867065853 a867065853 于 2014.12.18 16:14 提问

百度地图怎样通过一个城市,获取1000公里以内的其他城市名

就是比如我知道一个城市的经纬度,然后通过这个经纬度找到1000公里以内其他的城市名字

4个回答

caozhy
caozhy   Ds   Rxr 2014.12.18 16:47

中国的地级市也就几百个,根本不要用百度地图,下载一个中国城市坐标的数据库,自己查询下。
参考
http://download.csdn.net/detail/drift_away/4567164
http://www.wenkudaquan.com/doc/20130208/1039993.html

http://www.cnblogs.com/ycsfwhh/archive/2010/12/20/1911232.html

a867065853
a867065853 这样需要把所有的城市循环计算一遍,会不会太慢了,
接近 3 年之前 回复
a867065853
a867065853   2014.12.18 17:16

这样需要把所有的城市循环计算一遍,会不会太慢了,

BrothBo
BrothBo   2014.12.19 08:40

在这里给你提供一个基本思路:
由坐标转成城市的名字,在百度里有这样的方法接口,叫做反地理编码,你去查看api知道它怎么用就行。它返回的是一串字符,包含省名+城市名+街道名,
然后你需要做的是将地图上的两点坐标换算成实际距离,正如你所提到的 知道一个坐标,知道一个距离,然后根据这两个参数确定你的临界坐标,
然后以这个距离为半径,做一个圆周,然后在这个圆周内输入一个坐标,首先判断坐标是否在你所设定的范围内(算法就不说了吧 判断一个点是否在园内,高中数学知识),如果在圆内,就用反地理编码获取城市名。

a867065853
a867065853 这个方法不行啊,我不需要在圆周内输入一个坐标(也不能输入),因为我是要获取这个园内的所有城市名
接近 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2014.12.19 11:51

不需要循环计算,可以直接根据经度纬度求出可能处在这个范围内的经纬度的最大最小值(相当于切割出一个矩形,严格说是一个类似梯形的范围,如果考虑地球曲率),然后再在这个里面筛选。计算量没有多大

caozhy
caozhy 回复a867065853: 粗略地说,每110km等于一纬度差,每110km*cos所在纬度=一经度差,110km=pi*地球半径/180
接近 3 年之前 回复
a867065853
a867065853 这个怎样根据经纬度求出可能处在这个范围内的最大最小值啊,能不能给个例子啊,实在不会弄了,还有已知一个坐标,加上100公里,他的坐标变成多少,望大神不吝赐教
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片