首页 > 后端开发 > php教程 > 你在哪里?用地理编码器PHP实施地理位置

你在哪里?用地理编码器PHP实施地理位置

Jennifer Aniston
发布: 2025-02-19 09:45:09
原创
910 人浏览过

Where are you? Implementing geolocation with Geocoder PHP

SitePoint强调鼓舞人心的项目和创新工具的能力是无价的。 对我来说,地理编码器PHP就是这样的发现,这是我以前从未遇到过的图书馆。 我的工作经常涉及地图和地理信息,尤其是反向地理编码,经常使用付费服务来获得其出色的数据丰富。但是,Geocoder PHP被证明是集成了我使用的各种服务的缺失作品。>

地理编码器PHP提供一个用于简化地理编码任务的抽象层。 图书馆的架构是模块化的,包括用于处理请求的HTTPADAPTER,多样化的地理编码提供商以及用于输出管理的格式化器/垃圾机。

密钥功能:

为各种地理位置服务提供了简化的抽象层。

>带有HTTPADAPTER,多个提供商和格式化/垃圾机的模块化设计。
    >
  • 简单的作曲家安装和广泛的提供商支持(基于地理和IP)。
  • 在不同的地理编码器之间的一致结果,支持向前和反向地理编码。>
  • 安装(通过Composer):
  • >将其添加到您的
  • >:
>

或者,从地理编码器php网站下载档案。 地理编码地址:

地理编码通常涉及将地址(街道地址,社区等)转换为地理坐标。 结果准确性取决于地理编码器的质量。composer.json>

地理编码器要求HTTPADAPTER与Web服务交互。 其中包括一些(卷曲,插座),并支持其他支持(Buzz,Guzzle,Zend HTTP,GEOIP2),需要单独的项目集成。
{
    "require": {
        "willdurand/geocoder": "@stable"
    }
}
登录后复制
登录后复制
>支持的地理编码器众多,被归类为:

>

>地理编码器: Google Maps,OpenStreetMap,bing Maps,MapQuest等。

IP地理编码器:

freegeoip,hostip,ipinfodb等。

许多是免费的,有些需要API键并且具有使用限制(例如,Google的2500个请求/天)。 地理编码器质量各不相同;有些在特定区域中表现出色。
  • >>示例(Google Maps):>
  • 将包含纬度,经度,边界和地址组件。 地理编码器可确保一致的结果结构无论选择的提供商如何
  • locale敏感性:
地理编码器使用

支持本地特定的结果。 例如,使用俄罗斯地区:

>链接地理编码器:

$address = 'Laan van Meerdervoort, Den Haag, Nederland';

$adapter  = new \Geocoder\HttpAdapter\CurlHttpAdapter();
$geocoder = new \Geocoder\Geocoder();
$geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter));

$result = $geocoder->geocode($address);
登录后复制
登录后复制
为了获得最佳结果,链多种地理编码器。地理编码器返回第一个成功的结果:

$result

反向地理编码:

反向地理编码将坐标(纬度,经度)转换为地址。 记住顺序:纬度,然后是经度。

>
{
    "require": {
        "willdurand/geocoder": "@stable"
    }
}
登录后复制
登录后复制

地理编码IP地址:

地理编码IP地址(例如,来自

)很简单:> $_SERVER['REMOTE_ADDR']

请注意,IP地理编码结果通常不太详细(通常只有国家)。
$address = 'Laan van Meerdervoort, Den Haag, Nederland';

$adapter  = new \Geocoder\HttpAdapter\CurlHttpAdapter();
$geocoder = new \Geocoder\Geocoder();
$geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter));

$result = $geocoder->geocode($address);
登录后复制
登录后复制

错误处理:

始终使用障碍来处理潜在的异常:

>

try...catch

>输出格式:
$geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter, 'Ru'));
$result = $geocoder->geocode('Laan van Medevoort 7, Den Haag, Nederland');
登录后复制

> GeoCoder提供格式化(基于字符串)和卸货器(诸如Geojson,KML,GPX,WKB,WKT之类的语言输出)。>

结论:
$chain = new \Geocoder\Provider\ChainProvider([
  new \Geocoder\Provider\OpenStreetMapProvider($adapter),
  new \Geocoder\Provider\GoogleMapsProvider($adapter),
  new \Geocoder\Provider\BingMapsProvider($adapter, $bingApiKey),
]);
$geocoder->registerProvider($chain);
登录后复制

地理编码器PHP是一个结构良好,易于使用的库。 尽管强大的,潜在的改进可能包括基于置信度或地址错误余量等标准的高级结果过滤。 这将利用链式地理编码器的全部潜力。

以上是你在哪里?用地理编码器PHP实施地理位置的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板