Add API to convert between coordinates and a 4-word phrase, add PlusCodes to reverse geocoder
This commit is contained in:
parent
3a670076ce
commit
e03c02d416
@ -27,6 +27,14 @@ $APIS = [
|
|||||||
"longitude" => "/\-?[0-9]{1,3}(\.[0-9]{0,10})?/"
|
"longitude" => "/\-?[0-9]{1,3}(\.[0-9]{0,10})?/"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"gis/fixphrase" => [
|
||||||
|
"load" => "gis.fixphrase.php",
|
||||||
|
"vars" => [
|
||||||
|
"words (optional)" => "",
|
||||||
|
"latitude (optional)" => "/\-?[0-9]{1,3}(\.[0-9]{0,10})?/",
|
||||||
|
"longitude (optional)" => "/\-?[0-9]{1,3}(\.[0-9]{0,10})?/"
|
||||||
|
]
|
||||||
|
],
|
||||||
"gis/geoip" => [
|
"gis/geoip" => [
|
||||||
"load" => "net.geoip.php",
|
"load" => "net.geoip.php",
|
||||||
"vars" => [
|
"vars" => [
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
"io-developer/php-whois": "^4.0",
|
"io-developer/php-whois": "^4.0",
|
||||||
"geoip2/geoip2": "^2.11",
|
"geoip2/geoip2": "^2.11",
|
||||||
"shippo/shippo-php": "^1.4",
|
"shippo/shippo-php": "^1.4",
|
||||||
"easypost/easypost-php": "^3.5"
|
"easypost/easypost-php": "^3.5",
|
||||||
|
"bogdaan/open-location-code": "dev-master"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
57
composer.lock
generated
57
composer.lock
generated
@ -4,8 +4,59 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "e99006318711be4bc8b61a3e909a24da",
|
"content-hash": "56a7b51650928bd0c6c4eb301df2ccd9",
|
||||||
"packages": [
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "bogdaan/open-location-code",
|
||||||
|
"version": "dev-master",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Bogdaan/open-location-code.git",
|
||||||
|
"reference": "6e384e41cc6d6dd4d87f95c36aabf0de5256bf3f"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/Bogdaan/open-location-code/zipball/6e384e41cc6d6dd4d87f95c36aabf0de5256bf3f",
|
||||||
|
"reference": "6e384e41cc6d6dd4d87f95c36aabf0de5256bf3f",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.4.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "~4.0",
|
||||||
|
"psr/log": "~1.0"
|
||||||
|
},
|
||||||
|
"default-branch": true,
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"OpenLocationCode\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Novikov Bogdan",
|
||||||
|
"email": "hcbogdan@gmail.com",
|
||||||
|
"homepage": "http://hcbogdan.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Open location code for php",
|
||||||
|
"keywords": [
|
||||||
|
"olc",
|
||||||
|
"open location code",
|
||||||
|
"plus.codes"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/Bogdaan/open-location-code/issues",
|
||||||
|
"source": "https://github.com/Bogdaan/open-location-code/tree/master"
|
||||||
|
},
|
||||||
|
"time": "2018-02-03T16:15:27+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "catfan/medoo",
|
"name": "catfan/medoo",
|
||||||
"version": "v2.0.1",
|
"version": "v2.0.1",
|
||||||
@ -634,7 +685,9 @@
|
|||||||
"packages-dev": [],
|
"packages-dev": [],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"stability-flags": [],
|
"stability-flags": {
|
||||||
|
"bogdaan/open-location-code": 20
|
||||||
|
},
|
||||||
"prefer-stable": false,
|
"prefer-stable": false,
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": [],
|
"platform": [],
|
||||||
|
46
endpoints/gis.fixphrase.php
Normal file
46
endpoints/gis.fixphrase.php
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
$output = [];
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!empty($VARS["words"])) {
|
||||||
|
// convert words to coordinates
|
||||||
|
$words = urldecode($VARS["words"]);
|
||||||
|
$coords = FixPhrase::decode($words);
|
||||||
|
|
||||||
|
$output = [
|
||||||
|
"status" => "OK",
|
||||||
|
"action" => "decodeFromWords",
|
||||||
|
"words" => $words,
|
||||||
|
"coords" => $coords
|
||||||
|
];
|
||||||
|
} else if (!empty($VARS["latitude"]) && !empty($VARS["longitude"])) {
|
||||||
|
// convert coordinates to words
|
||||||
|
$lat = round($VARS["latitude"], 4);
|
||||||
|
$lon = round($VARS["longitude"], 4);
|
||||||
|
|
||||||
|
$words = FixPhrase::encode($lat, $lon);
|
||||||
|
$output = [
|
||||||
|
"status" => "OK",
|
||||||
|
"action" => "encodeToWords",
|
||||||
|
"words" => $words,
|
||||||
|
"coords" => [
|
||||||
|
$lat,
|
||||||
|
$lon
|
||||||
|
]
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
throw new Exception("Must supply either a string of words or a latitude/longitude pair.");
|
||||||
|
}
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
sendJsonResp($ex->getMessage(), "ERROR");
|
||||||
|
}
|
||||||
|
|
||||||
|
exitWithJson($output);
|
@ -6,11 +6,12 @@
|
|||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use OpenLocationCode\OpenLocationCode;
|
||||||
|
|
||||||
$output = [];
|
$output = [];
|
||||||
|
|
||||||
$lat = round($VARS["latitude"], 6);
|
$lat = round($VARS["latitude"], 5);
|
||||||
$lon = round($VARS["longitude"], 6);
|
$lon = round($VARS["longitude"], 5);
|
||||||
|
|
||||||
$cacheresp = $memcache->get("gis.geocode.reverse.$lat,$lon");
|
$cacheresp = $memcache->get("gis.geocode.reverse.$lat,$lon");
|
||||||
if ($cacheresp !== false) {
|
if ($cacheresp !== false) {
|
||||||
@ -33,10 +34,12 @@ $output = [
|
|||||||
"country" => $location['adminArea1'],
|
"country" => $location['adminArea1'],
|
||||||
"postalCode" => $location['postalCode']
|
"postalCode" => $location['postalCode']
|
||||||
],
|
],
|
||||||
|
"pluscode" => OpenLocationCode::encode($lat, $lon),
|
||||||
|
"fixphrase" => FixPhrase::encode($lat, $lon),
|
||||||
"coords" => [
|
"coords" => [
|
||||||
$lat,
|
$lat,
|
||||||
$lon
|
$lon
|
||||||
]
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
$memcache->set("gis.geocode.reverse.$lat,$lon", json_encode($output));
|
$memcache->set("gis.geocode.reverse.$lat,$lon", json_encode($output));
|
||||||
|
7701
lib/FixPhrase.lib.php
Normal file
7701
lib/FixPhrase.lib.php
Normal file
File diff suppressed because it is too large
Load Diff
BIN
resources/wordlist.ods
Normal file
BIN
resources/wordlist.ods
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user