【问题标题】:GeoLocation API [closed]地理位置 API [关闭]
【发布时间】:2009-08-16 00:02:46
【问题描述】:

我刚刚遇到了这个很棒的 AP​​I:http://ipinfodb.com/ip_location_api.php

但是,我也想检索大陆。这是否可能,因为我找不到它。

也许还有另一个免费提供的 API 将提供城市、国家和大陆?我尝试过 Google 的 AJAX API,但他们也不提供大陆。

也许我将不得不将我已经拥有的东西转换成大陆,如何?!

我希望这不是太主观!

谢谢大家

【问题讨论】:

    标签: php javascript api geolocation


    【解决方案1】:

    为什么不将每个 CountryCodeXXCountryCode 映射到相应的大陆?应该不会太难,因为只有大约 200 个国家和 5 或 7 个大洲。

    编辑:我不知道用 PHP 准备的这种数据库,但这里有一个 json_encode'd 数组,用于所有国家代码作为键和大陆名称作为值的国家:

    $json = '{"AD":"Europe","AE":"Asia","AF":"Asia","AG":"North America","AI":"North America","AL":"Europe","AM":"Asia","AN":"North America","AO":"Africa","AQ":"Antarctica","AR":"South America","AS":"Australia","AT":"Europe","AU":"Australia","AW":"North America","AZ":"Asia","BA":"Europe","BB":"North America","BD":"Asia","BE":"Europe","BF":"Africa","BG":"Europe","BH":"Asia","BI":"Africa","BJ":"Africa","BM":"North America","BN":"Asia","BO":"South America","BR":"South America","BS":"North America","BT":"Asia","BW":"Africa","BY":"Europe","BZ":"North America","CA":"North America","CC":"Asia","CD":"Africa","CF":"Africa","CG":"Africa","CH":"Europe","CI":"Africa","CK":"Australia","CL":"South America","CM":"Africa","CN":"Asia","CO":"South America","CR":"North America","CU":"North America","CV":"Africa","CX":"Asia","CY":"Asia","CZ":"Europe","DE":"Europe","DJ":"Africa","DK":"Europe","DM":"North America","DO":"North America","DZ":"Africa","EC":"South America","EE":"Europe","EG":"Africa","EH":"Africa","ER":"Africa","ES":"Europe","ET":"Africa","FI":"Europe","FJ":"Australia","FK":"South America","FM":"Australia","FO":"Europe","FR":"Europe","GA":"Africa","GB":"Europe","GD":"North America","GE":"Asia","GF":"South America","GG":"Europe","GH":"Africa","GI":"Europe","GL":"North America","GM":"Africa","GN":"Africa","GP":"North America","GQ":"Africa","GR":"Europe","GS":"Antarctica","GT":"North America","GU":"Australia","GW":"Africa","GY":"South America","HK":"Asia","HN":"North America","HR":"Europe","HT":"North America","HU":"Europe","ID":"Asia","IE":"Europe","IL":"Asia","IM":"Europe","IN":"Asia","IO":"Asia","IQ":"Asia","IR":"Asia","IS":"Europe","IT":"Europe","JE":"Europe","JM":"North America","JO":"Asia","JP":"Asia","KE":"Africa","KG":"Asia","KH":"Asia","KI":"Australia","KM":"Africa","KN":"North America","KP":"Asia","KR":"Asia","KW":"Asia","KY":"North America","KZ":"Asia","LA":"Asia","LB":"Asia","LC":"North America","LI":"Europe","LK":"Asia","LR":"Africa","LS":"Africa","LT":"Europe","LU":"Europe","LV":"Europe","LY":"Africa","MA":"Africa","MC":"Europe","MD":"Europe","ME":"Europe","MG":"Africa","MH":"Australia","MK":"Europe","ML":"Africa","MM":"Asia","MN":"Asia","MO":"Asia","MP":"Australia","MQ":"North America","MR":"Africa","MS":"North America","MT":"Europe","MU":"Africa","MV":"Asia","MW":"Africa","MX":"North America","MY":"Asia","MZ":"Africa","NA":"Africa","NC":"Australia","NE":"Africa","NF":"Australia","NG":"Africa","NI":"North America","NL":"Europe","NO":"Europe","NP":"Asia","NR":"Australia","NU":"Australia","NZ":"Australia","OM":"Asia","PA":"North America","PE":"South America","PF":"Australia","PG":"Australia","PH":"Asia","PK":"Asia","PL":"Europe","PM":"North America","PN":"Australia","PR":"North America","PS":"Asia","PT":"Europe","PW":"Australia","PY":"South America","QA":"Asia","RE":"Africa","RO":"Europe","RS":"Europe","RU":"Europe","RW":"Africa","SA":"Asia","SB":"Australia","SC":"Africa","SD":"Africa","SE":"Europe","SG":"Asia","SH":"Africa","SI":"Europe","SJ":"Europe","SK":"Europe","SL":"Africa","SM":"Europe","SN":"Africa","SO":"Africa","SR":"South America","ST":"Africa","SV":"North America","SY":"Asia","SZ":"Africa","TC":"North America","TD":"Africa","TF":"Antarctica","TG":"Africa","TH":"Asia","TJ":"Asia","TK":"Australia","TM":"Asia","TN":"Africa","TO":"Australia","TR":"Asia","TT":"North America","TV":"Australia","TW":"Asia","TZ":"Africa","UA":"Europe","UG":"Africa","US":"North America","UY":"South America","UZ":"Asia","VC":"North America","VE":"South America","VG":"North America","VI":"North America","VN":"Asia","VU":"Australia","WF":"Australia","WS":"Australia","YE":"Asia","YT":"Africa","ZA":"Africa","ZM":"Africa","ZW":"Africa"}';
    

    只需调用它:

    echo '<pre>';
    print_r(json_decode($json, true));
    echo '</pre>';
    

    【讨论】:

    • 这正是我想要做的,但是 surley 已经存在一个数据库或者 PHP 有一些内置函数可以做到这一点?
    • 太棒了!你从哪里弄来的那个眼睛,你认为它有多准确?
    • AFAIK 这是一个可靠的来源,我发现它可以在网络服务 (services.sapo.pt/GIS/GetCountries) 上找到,我刚刚抓取了它并将大陆名称翻译成英文。
    【解决方案2】:

    只有 200 个国家和 6 大洲,所以我会质疑为什么您需要网络服务来确定这些信息...除非您计划从政治如此不稳定的国家吸引大量用户,他们会更改名称或在您的应用程序出现之前不复存在。只保留一个静态列表。

    此外,并非所有国家/地区都在一个大陆上。例如,新西兰不属于澳大利亚(至少根据维基百科)。

    如果您可以通过编程方式确定用户所在的国家/地区,那么您就有足够的信息在您拥有的静态列表中查找他们所在的大陆。自己组装这些信息并将其放入数据库或 XML 文件中需要一个小时,而且它很少会改变。您已经花了差不多这么多时间试图找出如何动态确定大陆。

    【讨论】:

    • 最后一点信息是什么?你是说大陆?我需要确定这一点,因为我想根据用户的大陆位置执行各种功能,然后按国家、城市等向下钻取。我的问题可能很简单,但我的思路不是。 :)
    • @Abs 查看我的编辑(将评论移至答案以帮助澄清)
    • 谢谢雷克斯。我明白。只是我很懒,希望它会为我准备好并打包!
    【解决方案3】:

    看看MaxMind GeoLite CountryMaxMind GeoLite City

    如果是您主要关注的大陆(我不知道 GeoLite 是否存储该大陆),您始终可以将 GeoLite 数据库中的国家代码映射到 MySql 用作示例数据库的world database 的国家代码.其中存储了每个国家/地区的大陆。

    【讨论】:

    • 我试过这些人,他们的实现很混乱,免费功能的准确性不是很好。但你是对的,它是我遇到过的最好的,但我需要更好更轻的东西。
    • @Abs - mysql 世界数据库有大洲。如果 GeoLite 数据库有国家代码(未检查),这可以工作。
    • 好点。我认为确实如此。亲爱的上帝,我是个傻瓜! :)
    【解决方案4】:

    试试http://www.geobytes.com/IpLocator.htm?GetLocation

    我一直使用他们的在线界面,从未尝试过 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-02
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      相关资源
      最近更新 更多