webworker01 / geo-location
使用GeoLocation.class.php检索边界坐标、距离、经度和纬度
v1.1.2
2019-04-22 04:31 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-09-22 16:15:39 UTC
README
使用GeoLocation检索边界坐标和距离。您还可以使用此PHP类计算和测量地理点之间的距离。
这是最初发布在 http://JanMatuschek.de/LatitudeLongitudeBoundingCoordinates上的Java代码的PHP版本。进行了一些修改,并使用Google的Geocoding API提供了一个额外的辅助方法,用于从地址检索纬度和经度。
许可证: http://creativecommons.org/licenses/by/3.0/
示例
获取两点之间的距离
use AnthonyMartin\GeoLocation\GeoLocation as GeoLocation;
// Set locations
$edison_nj = GeoLocation::fromDegrees(40.5187154, -74.4120953);
$brooklyn_ny = GeoLocation::fromDegrees(40.65, -73.95);
echo "Distance from Edison, NJ to Brookyln, NY: " .
$edison_nj->distanceTo($brooklyn_ny, 'miles') . " miles \n";
# Distance from Edison, NJ to Brookyln, NY: 25.888611494606 miles
echo "Distance from Edison, NJ to Brooklyn, NY: " .
$edison_nj->distanceTo($brooklyn_ny, 'kilometers') . " kilometers \n";
# Distance from Edison, NJ to Brooklyn, NY: 41.663681581973 kilometers
获取边界坐标
use AnthonyMartin\GeoLocation\GeoLocation as GeoLocation;
$edison = GeoLocation::fromDegrees(40.5187154, -74.4120953);
$coordinates = $edison->boundingCoordinates(3, 'miles');
echo "min latitude: " . $coordinates[0]->getLatitudeInDegrees() . " \n";
echo "min longitude: " . $coordinates[0]->getLongitudeInDegrees() . " \n";
echo "max latitude: " . $coordinates[1]->getLatitudeInDegrees() . " \n";
echo "max longitude: " . $coordinates[1]->getLongitudeInDegrees() . " \n";
/**
* Returns:
* min latitude: 40.47529593323
* min longitude: -74.469211617725
* max latitude: 40.56213486677
* max longitude: -74.354978982275
**/
从地址或位置获取纬度和经度
use AnthonyMartin\GeoLocation\GeoLocation as GeoLocation;
$location = 'New York City';
$response = GeoLocation::getGeocodeFromGoogle($location);
$latitude = $response->results[0]->geometry->location->lat;
$longitude = $response->results[0]->geometry->location->lng;
echo $latitude . ', ' . $longitude;
# 40.7143528, -74.0059731