如何在国家地图中绘制城市图? (这样用户可以搜索城市附近的广告)

时间:2009-12-11 14:13:15

标签: php javascript sql mysql html

我有一个分类广告网站。用户首先必须指定他们的“搜索区域”......

我想添加一个功能,用户也可以选中一个复选框,找到“关闭”所选“区域”的广告。

但我不知道如何以聪明的方式将这些区域“联系”或“联系”起来。我需要一些关于如何做到这一点的建议......

例如,如何在可以搜索分类广告的网站上完成“里程半径搜索”?

由于

BTW我使用PHP来查询MYSQL的结果。目前所有区域在字段中都有各自的名称(Nevada =表字段值中的Nevada)因此查询是通过获取下拉列表的值并在mysql表中搜索该值来完成的。

3 个答案:

答案 0 :(得分:0)

您必须使用radius搜索脚本。您还需要一些县/市的数据库,其中包含城市/国家,学校,家庭等信息。

那里有很多半径搜索脚本,你需要谷歌搜索一下。

答案 1 :(得分:0)

以下链接专门针对Microsoft SQL Server编写,但我怀疑将其转换为MySQL并不太难。

ZIP code Latitude/Longitude proximity search

答案 2 :(得分:0)

这是我们使用的那个。 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