![](/img/trans.png)
[英]How to set map center on loaded GeoJSON features or what event is sent upon loadGeoJson completion with 3.16 javascript API for Google Maps?
[英]How to display geojson data with meters on javascript google map API
GeoJson 文件坐标以 [X, Y] 米而不是 [lng, lat] 为单位。 如何在谷歌地图上显示?
GeoJson 数据
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
360590,
555610
],
[
360590,
555555.0128
],
[
360590,
555540
],
[
360592.4439,
555540
],
[
360600,
555540
],
[
360600,
555518.8277
]
]
]
]
}
}
]
}
这里,[360590, 555610] - [X, Y] 坐标以米为单位,现在我们需要在谷歌地图上显示这个坐标,有什么解决办法吗?
我们还必须使用 addGeoJson 或 loadGeoJson 方法,因为我们在 GeoJson 文件中有 200MB 数据。
在后端转换会更好,但也有一种 JS 方式——使用proj4js和epsg.io来查找相应的数据。
重点:线性环的第一个和最后一个位置需要相同。 否则您的 GeoJSON无效。 所以请注意我的points
组如何以相同的点开始和结束。
安装/导入proj4js
:
// from https://epsg.io/27700
const EPSG_27700_DATUM = "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs";
// from https://epsg.io/4326
const WGS84_DATUM = "+proj=longlat +datum=WGS84 +no_defs";
const points = [[360590,555610],[360590,555555.0128],[360590,555540],[360592.4439,555540],[360600,555540],[360600,555518.8277],[360590,555610]];
const converted_points = points.map(([lon, lat]) => {
return proj4(EPSG_27700_DATUM, WGS84_DATUM, [lon, lat]);
});
console.info({ converted_points });
验证您的多边形确实在 GB 内:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.