【问题标题】:Problem with location aware XML file位置感知 XML 文件的问题
【发布时间】:2011-08-13 13:47:45
【问题描述】:

我正在制作位置感知应用程序。我在服务器上有 XML 文件,其中包含不同商店的经纬度坐标信息。 现在在我的应用程序中,我可以获得当前的纬度和经度坐标,并且还可以解析 XML 文件。

但是我怎样才能根据我在 XML 文件中的当前坐标找出最近的商店呢?

如果我们使用 google Api,它会根据查询返回包含最近位置的 xml 文件。但在我的情况下,我在服务器上使用 xml 文件。

请推荐

【问题讨论】:

    标签: iphone location-aware


    【解决方案1】:

    我认为您最好将数据转换为数据库格式(sqlite/mysql),以便用户可以提交他们的 lat/Lng 点并返回正确的项目...否则您需要每次都解析和比较整个文件...但是,您仍然可以使用该公式(实际上只是将比较步骤转移到数据库查询而不是在您的应用程序中)

    编辑:这有一个实现 hasrsine 并返回 x 结果的 SQL 查询示例:MySQL Great Circle Distance (Haversine formula)

    【讨论】:

    • +1 用于最小化流量和最小化设备上的工作。没想到:)
    • 所以你认为我必须将我的纬度和经度发送到 sql server 数据库。然后必须在服务器端进行计算?
    • 又出现了一个问题。将应用程序与 sql server 连接是否安全?如何安全连接?
    • 好吧,创建一个充当中介的 Web 服务(php 是我的首选),不要直接连接到您的数据库...但是,如果您使用的是 sqlite,那就是在设备上,你不需要那个......但如果你想经常编辑数据,我会用网络服务集中存放数据。如果它是相当静态的,我会用应用程序发送数据
    • 你好机器人 woods 和 sideSwipe。我想知道你建议我在服务器端实施 heversine 公式。但是会有成千上万的用户同时访问应用程序。那么数据库要同时生成多少个xml文件呢?在数据库中是否有可能?
    【解决方案2】:

    这是计算地球上两点之间距离的半正弦公式:

    a = sin²(Δlat/2) + cos(lat1)*cos(lat2)*sin²(Δlong/2);
    c = 2*atan2(√a, √(1−a));
    d = R*c;
    

    你可以很容易地在 obj-c 中适应它。

    请注意:R 为地球半径 = 6,371km;

    所以只要计算两个点的纬度和经度差,然后根据它计算d。

    希望这会有所帮助。

    【讨论】:

    • 对每个商店都这样做,然后检查最小的 d :)
    • 感谢您的信息。你能解释一下吗?就像我会有两个坐标。 lat,long of my current location 和 lat,long of stores 我如何实现这个公式
    • 您可以在此处找到一些 C 代码:jaimerios.com/?p=39 只需运行第二个 C 函数(最多“转换”为 obj-c),其中包含用户坐标和每个商店的坐标,以及将距离作为对象存储到 nsdictionary 中 store 的 key 中,然后检查哪个 store 的距离最小。
    猜你喜欢
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多