11062 / gcoord
There is no license information available for the latest version (v1.0.0) of this package.
地理坐标系转换工具
v1.0.0
2025-06-15 14:28 UTC
Requires
- php: >=5.3
Requires (Dev)
- php: >=5.3
This package is auto-updated.
Last update: 2025-06-15 14:49:15 UTC
README
gcoord(geographic coordinates)是一个处理地理坐标系的JS库,用来修正百度地图、高德地图及其它互联网地图坐标系不统一的问题。
支持转换坐标数组和 GeoJSON 数据,无外部依赖,本库是Node.js库gcoord的PHP移植版本,支持多种坐标系转换。
更多信息可以阅读地理坐标系
本代码参考自hujiulong/gcoord转换移植的PHP版本
安装
通过npm安装:
composer require 11062/gcoord
引入
use Gcoord\Gcoord; use Gcoord\CRSTypes;
使用
例如从手机的GPS得到一个经纬度坐标,需要将其展示在百度地图上,则应该将当前坐标从WGS-84坐标系转换为BD-09坐标系
// WGS84转GCJ02 $wgs84Coord = [116.403988, 39.914266]; $gcj02Coord = Gcoord::transform($wgs84Coord, CRSTypes::WGS84, CRSTypes::GCJ02); echo "WGS84转GCJ02结果:" . print_r($gcj02Coord, true) . "\n\n"; // GCJ02转BD09 $bd09Coord = Gcoord::transform($gcj02Coord, CRSTypes::GCJ02, CRSTypes::BD09); echo "GCJ02转BD09结果:" . print_r($bd09Coord, true) . "\n\n"; // BD09转BD09MC $bd09MCCoord = Gcoord::transform($bd09Coord, CRSTypes::BD09, CRSTypes::BD09MC); echo "BD09转BD09MC结果:" . print_r($bd09MCCoord, true) . "\n\n"; // EPSG3857转WGS84 $epsg3857Coord = Gcoord::transform([13378583.21, 3573214.56], CRSTypes::EPSG3857, CRSTypes::WGS84); echo "EPSG3857转WGS84结果:" . print_r($epsg3857Coord, true) . "\n\n"; // GeoJSON对象转换 $geojson = [ 'type' => 'Feature', 'geometry' => [ 'type' => 'Point', 'coordinates' => [116.403988, 39.914266] ], 'properties' => ['name' => '测试点'] ]; $transformedGeojson = Gcoord::transform($geojson, CRSTypes::WGS84, CRSTypes::GCJ02); echo "GeoJSON转换结果:" . json_encode($transformedGeojson, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "\n";
同时gcoord还可以转换GeoJSON对象的坐标系,详细使用方式可以参考API
API
Gcoord::transform(input, from, to, isFloat=true)
进行坐标转换
参数
input
GeoJSON | Array<number> GeoJSON对象,或GeoJSON字符串,或经纬度数组from
CRSTypes 当前坐标系to
CRSTypes 目标坐标系isFloat
boolean 默认值为:true,是否返回浮点,如果为true就是返回浮点类型,如果为false则返回php的高精度字符串的值
返回值
GeoJSON | Array<number>
返回数组或GeoJSON数组(由输入决定),注意:当输入为GeoJSON时,transform会改变输入对象
CRSTypes
CRSTypes为坐标系,目标支持以下几种坐标系
CRS | 坐标格式 | 说明 |
---|---|---|
CRSTypes::WGS84 | [lng,lat] | WGS-84坐标系,GPS设备获取的经纬度坐标 |
CRSTypes::GCJ02 | [lng,lat] | GCJ-02坐标系,google中国地图、soso地图、aliyun地图、mapabc地图和高德地图所用的经纬度坐标 |
CRSTypes::BD09 | [lng,lat] | BD-09坐标系,百度地图采用的经纬度坐标 |
CRSTypes::BD09LL | [lng,lat] | 同BD09 |
CRSTypes::BD09MC | [x,y] | BD-09米制坐标,百度地图采用的米制坐标,单位:米 |
CRSTypes::BD09Meter | [x,y] | 同BD09MC |
CRSTypes::Baidu | [lng,lat] | 百度坐标系,BD-09坐标系别名,同BD-09 |
CRSTypes::BMap | [lng,lat] | 百度地图,BD-09坐标系别名,同BD-09 |
CRSTypes::AMap | [lng,lat] | 高德地图,同GCJ-02 |
CRSTypes::WebMercator | [x,y] | Web Mercator投影,墨卡托投影,同EPSG3857,单位:米 |
CRSTypes::WGS1984 | [lng,lat] | WGS-84坐标系别名,同WGS-84 |
CRSTypes::EPSG4326 | [lng,lat] | WGS-84坐标系别名,同WGS-84 |
CRSTypes::EPSG3857 | [x,y] | Web Mercator投影,同WebMercator,单位:米 |
CRSTypes::EPSG900913 | [x,y] | Web Mercator投影,同WebMercator,单位:米 |
支持更多坐标系? gcoord的目标是处理web地图中的坐标,目前支持的坐标系已经能满足绝大部分要求了,同时gcoord也能保持轻量。