繁体   English   中英

如何在 javascript google map API 上显示带有米的 geojson 数据

[英]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 方式——使用proj4jsepsg.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM