Skip to content

[READ ONLY] Provider for ArcGIS

License

Notifications You must be signed in to change notification settings

geocoder-php/arcgis-online-provider

Repository files navigation

ArcGIS Online

Build Status Latest Stable Version Total Downloads Monthly Downloads Code Coverage Quality Score Software License

This is the ArcGIS provider from the PHP Geocoder. This is a READ ONLY repository. See the main repo for information and documentation.

ArcGIS provides 2 APIs for geocoding addresses:

  • geocodeAddresses
  • findAddressCandidates
    • This API states:

    Applications are contractually prohibited from storing the results of geocoding transactions unless they make the request by passing the forStorage parameter with a value of true and the token parameter with a valid ArcGIS Online token.

Since a token is required for the geocodeAddresses API, the geocodeQuery method checks the token property:

  • If token is NULL, it uses the findAddressCandidates API.
  • If token is not NULL, it uses the geocodeAddresses API.

Usage

Without a token

$httpClient = new \Http\Discovery\Psr18Client();

$provider = new \Geocoder\Provider\ArcGISList\ArcGISList($httpClient);

// Uses the `findAddressCandidates` operation. Result storage is prohibited.
$result = $geocoder->geocodeQuery(GeocodeQuery::create('Buckingham Palace, London'));

With a token

$httpClient = new \Http\Discovery\Psr18Client();

// Your token is required.
$provider = \Geocoder\Provider\ArcGISList\ArcGISList::token($httpClient, 'your-token');

// Uses the `geocodeAddresses` operation. Result storage is permitted.
$result = $geocoder->geocodeQuery(GeocodeQuery::create('Buckingham Palace, London'));

Install

composer require geocoder-php/arcgis-online-provider

Note

It is possible to specify a sourceCountry to restrict results to this specific country thus reducing request time (note that this doesn't work on reverse geocoding).

Contribute

Contributions are very welcome! Send a pull request to the main repository or report any issues you find on the issue tracker.