V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kenyth
V2EX  ›  iPhone

关于 App 的 Gecoding (经度纬度和地址转换)的实现

  •  
  •   Kenyth · 2010-08-08 18:10:44 +08:00 · 12456 次点击
    这是一个创建于 5231 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有人知道常见的 iPhone App 中问你要位置然后可以直接显示地址给你看是怎么实现的吗?例如各种twitter客户端,4sq,国内的大众点评和丁丁地图的iPhone App等等。

    也就是把地址(例如街道、路名等)转为经度纬度的过程,或者反向的过程。

    我现在知道的有 Google Maps 的 Geocoding API 可以办到,但是和 Terms of Service 好像有冲突:
    “You may use the HTTP geocoder to geocode addresses outside of your Google Maps API application so that they may be cached and later displayed using one of the Google Maps APIs, but locations obtained using the Geocoding Web Service may not be used by any other application, distributed by other means, or resold. ”
    http://code.google.com/intl/en/apis/maps/faq.html#geocoder_exists

    谁知道还有没有其他的办法可以做这件事情的,特别是中文地址的支持。

    另外,如果我要在自己的服务器端实现这个 (Google API 有 25000的限制),有什么方案么有?
    14 条回复    1970-01-01 08:00:00 +08:00
    kailuo
        1
    kailuo  
       2010-08-08 18:36:47 +08:00
    Kenyth
        2
    Kenyth  
    OP
       2010-08-08 18:43:25 +08:00
    @kailuo 那是获得的经纬度,不是可读的地址名称,例如北京 海淀区 学院路 xx号。
    Livid
        3
    Livid  
    MOD
       2010-08-08 18:49:52 +08:00
    在你的电脑上装上 Charles,然后设置 iPhone 的 HTTP Proxy 到你的电脑,然后运行你好奇的那个程序,它发出的所有网络请求就被捕获下来。
    kailuo
        4
    kailuo  
       2010-08-08 18:52:54 +08:00
    好像 Core Location 是获取用户位置的⋯⋯

    以前也考虑过这个问题,刚才顺便查了一下,的确需要 API 支持 :( 不过好消息是似乎 MicroSoft 以及 Yahoo! 也都有类似服务。

    可以参考下这个:
    http://blog.sallarp.com/ipad-iphone-forward-geocoding-api-google/
    kailuo
        5
    kailuo  
       2010-08-08 18:54:05 +08:00
    @Kenyth 嗯,还没有具体用过。现在正好提前看看先 :)
    Kenyth
        6
    Kenyth  
    OP
       2010-08-08 18:59:55 +08:00
    @Livid 这是我最希望看到的答案:-),以前看过这东西一时没想起来,正在尝试。
    Kenyth
        7
    Kenyth  
    OP
       2010-08-08 19:30:31 +08:00
    那个工具太棒了,可是免费试用只有1个月。。。

    刚测试了国内的两个(包括号称做地图的丁丁地图)全部是用的 Google 的 API ,还不是 .cn 的,全不是 .com 的,看来我都高估了别人的实力:-)

    大众点评的 app 用的是 http://maps.google.com/maps/geo

    丁丁地图用的是 http://maps.google.com/maps/api/gecode 参数里面连 API key 都没有带 (我也搞不清这个 key 什么时候是起作用的)
    Livid
        8
    Livid  
    MOD
       2010-08-08 19:37:26 +08:00
    v3 版的 API 推出后不强制要求 API KEY。
    Kenyth
        9
    Kenyth  
    OP
       2010-08-08 19:42:57 +08:00
    @Livid 这样的话 Google 宣称的 terms of service 就不能从技术层面限制了,应该是商业层面的。依据我的理解,他们这种使用可能全部违反了 ToS 。
    Livid
        10
    Livid  
    MOD
       2010-08-08 19:45:49 +08:00
    @Kenyth 对于一个每天几十亿次请求的 API 来说,他们可能还真的不会太在乎一些细小的 violation。先用最简单的办法把自己想要的功能做出来吧。
    Kenyth
        11
    Kenyth  
    OP
       2010-08-08 19:50:21 +08:00
    @Livid 正解! 谢了:-)
    doskoi
        12
    doskoi  
       2010-08-08 21:19:07 +08:00
    CoreLocation 获得的经纬度 SDK还提供Reverse Geocoding
    就能获得可读的地址了...查文档吧~
    doskoi
        13
    doskoi  
       2010-08-08 21:20:16 +08:00
    MKReverseGeocoder & MKReverseGeocoderDelegate
    easy for use
    jorakura
        14
    jorakura  
       2010-08-13 15:35:55 +08:00
    收藏一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1082 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 19:10 · PVG 03:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.