如何在国家地图中绘制城市地图? (因此用户可以搜索他们所在城市附近的广告)
Posted
技术标签:
【中文标题】如何在国家地图中绘制城市地图? (因此用户可以搜索他们所在城市附近的广告)【英文标题】:How mapping of cities in a country-map is done? ( so users can search for ads nearby their cities ) 【发布时间】:2009-12-11 14:13:15 【问题描述】:我有一个分类网站。用户首先必须指定他们的“搜索区域”...
我想添加一个功能,用户还可以选中复选框以查找“靠近”其所选“区域”的广告。
但我不知道如何以智能的方式将这些区域“映射”或“链接”在一起。我需要一些关于如何做到这一点的建议......
例如,如何在可以搜索分类信息的网站上进行“里程半径搜索”?
谢谢
顺便说一句,我使用 php 来查询 mysql 的结果。目前所有区域在字段中都有各自的名称(Nevada = Nevada 在表字段值中也是)所以查询是通过获取下拉列表的值并在 mysql 表中搜索该值来完成的。
【问题讨论】:
【参考方案1】:您必须为此使用半径搜索脚本。您还需要一些县/城市数据库,其中包含城市/国家、经度、纬度等信息。
那里有相当多的半径搜索脚本,你需要谷歌一下才能找到。
【讨论】:
【参考方案2】:以下链接是专门为 Microsoft SQL Server 编写的,但我怀疑将其转换为 MySQL 不会太难。
ZIP code Latitude/Longitude proximity search
【讨论】:
【参考方案3】:这是我们使用的。再次使用Sql Server 但很容易修改。
网络上的许多其他示例给出了不可靠的结果....
ALTER function [dbo].[udf_Haversine](@lat1 float, @long1 float, @lat2 float, @long2 float) returns float begin
declare @dlon float, @dlat float, @rlat1 float, @rlat2 float, @rlong1 float, @rlong2 float, @a float, @c float, @R float, @d float, @DtoR float
select @DtoR = 0.017453293
select @R = 3937 --3976
select
@rlat1 = @lat1 * @DtoR,
@rlong1 = @long1 * @DtoR,
@rlat2 = @lat2 * @DtoR,
@rlong2 = @long2 * @DtoR
select
@dlon = @rlong1 - @rlong2,
@dlat = @rlat1 - @rlat2
select @a = power(sin(@dlat/2), 2) + cos(@rlat1) * cos(@rlat2) * power(sin(@dlon/2), 2)
select @c = 2 * atn2(sqrt(@a), sqrt(1-@a))
select @d = @R * @c
return @d
end
【讨论】:
以上是关于如何在国家地图中绘制城市地图? (因此用户可以搜索他们所在城市附近的广告)的主要内容,如果未能解决你的问题,请参考以下文章