雪狼/geocoding

适用于所有提供者的开发包

v4.0.2 2019-03-28 13:33 UTC

README

要求

  • PHP >= 7.1.3
  • Laravel >= 5.6

安装

  1. 通过 composer 安装包
composer require snezhkoigor/geocoding
  1. 如果你正在运行 Laravel 5.5(包将自动发现),请跳过此步骤。config/app.php 中找到 providers 数组键,并注册 Geocoding 服务提供者
// 'providers' => [
    Geocoding\Laravel\GeocodingServiceProvider::class,
// ];

提供者

默认情况下,配置指定了一个链式提供者,其中包含 GoogleMaps 提供者用于地址以及 lat/long 的反向查找。

但是,你可以根据需要添加或删除提供者,无论是链式提供者内部,还是与之并列。以下是由包提供的默认配置

<?php
use Geocoding\Laravel\Providers\DaData;

return [
    /*
    |--------------------------------------------------------------------------
    | Providers
    |--------------------------------------------------------------------------
    |
    */
    'providers' => [
        DaData::class => [
            'token' => env('DADATA_TOKEN', ''),
            'proxy' => env('DADATA_PROXY_IP', null)
        ]
    ]
];

支持的提供者

  1. DaData

自定义

如果你想要更改默认配置,发布并编辑配置文件

php artisan vendor:publish --provider="Geocoding\Laravel\GeocodingServiceProvider" --tag="config"

使用方法

服务提供者初始化 geocoding 服务,可以通过 facade Geocoding::... 或应用程序助手 app('geocoding')->... 访问。

地址地理编码

app('geocoding')->geocode((\Geocoding\Laravel\Models\Query\GeocodeQuery::create('Санкт-Петербург')));

结果将是

{
    "provided_by": "DaData.ru",
    "latitude": 59.9391313,
    "longitude": 30.3159004,
    "address": "г Санкт-Петербург"
}

建议并获取地址集合

app('geocoding')->suggest((\Geocoding\Laravel\Models\Query\SuggestQuery::create('перво')));

结果将是

[
    "Нижегородская обл, г Первомайск",
    "Кировская обл, пгт Первомайский",
    "респ Башкортостан, Мелеузовский р-н, с/с Первомайский",
    "респ Башкортостан, Стерлитамакский р-н, с/с Первомайский",
    "Чувашская республика - Чувашия, Батыревский р-н, с/п Первомайское",
    "Красноярский край, Манский р-н, с/с Первоманский",
    "Пензенская обл, Каменский р-н, с/с Первомайский сельсовет",
    "респ Башкортостан, Янаульский р-н, с/с Первомайский",
    "респ Башкортостан, Благоварский р-н, с/с Первомайский",
    "Чувашская республика - Чувашия, Алатырский р-н, с/п Первомайское"
]