如何在国家地图中绘制城市地图? (因此用户可以搜索他们所在城市附近的广告)

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

【讨论】:

以上是关于如何在国家地图中绘制城市地图? (因此用户可以搜索他们所在城市附近的广告)的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中绘制 1990 年前的世界地图

在谷歌地图上绘制区域

[QGIS]绘制参考地图--德国

根据 geoip 数据生成国家地图

地球与地图思维导图绘制

当用户在 Google 地图中拒绝位置访问时,如何向用户显示当前国家/地区?