首页 / 浏览问题 / WebGIS / 问题详情
我有个地图,使用L.marker渲染经纬度坐标偏移,需要如何才能渲染到正确位置
14EXP 2025年11月04日

function shiftLongitude(lng) {
  let newLng = lng - 150
  if (newLng < -180) newLng += 360
  if (newLng > 180) newLng -= 360
  return newLng
}
 L.marker([40.06669998, shiftLongitude(116.5999985)], { icon: createStarIcon() }).addTo(pageData.map)

我有个地图必须使用EPSG3857才能正常渲染,中央经度是150,我把左边的经度都减去150,然后使用L.marker函数进行渲染,但是发现渲染后的坐标有偏移,如何才能让坐标渲染到地图上的正确位置

1个回答

您好,您这个坐标系是自定义的?可以用iDesktopX先将自定义坐标系的点投影转换为EPSG3857,然后再添加到前端上
1,401EXP 2025年11月04日
const themeJson = {

    '美国': [-73.97622, 40.757498, 0], // 纽约

    '加拿大': [-109.404347, 60.638178, 0],

    '澳大利亚': [137.708144, -25.328065, 0],

    '中国': [116.512885, 39.847469, 0],

    // '捷克': [15.006139,49.144482, 0],

    '新加坡': [103.413384, 1.910925, 0],

    '阿富汗': [69.132386, 34.739287, 0], // 阿富汗

    '安哥拉': [13.285773, -8.748538, 0], // 安哥拉

    '阿尔巴尼亚': [19.809499, 41.389924, 0], // 阿尔巴尼亚

    '阿根廷': [-64.388276, -31.379492, 0], // 阿根廷-科尔多瓦

    '阿联酋': [54.662609, 24.390891, 0], // 阿拉伯联合酋长国-阿布扎比

    '奥地利': [16.373532, 48.209137, 0], // 奥地利-维也纳

    '阿塞拜疆': [49.867851, 40.409897, 0], // 阿塞拜疆共和国-巴库

    '比利时': [4.342799, 50.85052, 0], // 比利时

    '贝宁': [2.626232, 6.499347, 0], // 贝宁-波多诺伏

    '布基纳法索': [-1.521672, 12.375667, 0], // 布基纳法索-瓦加杜古

    '孟加拉国': [90.410568, 23.813179, 0], // 孟加拉人民共和国 - 达卡

    '保加利亚': [23.318705, 42.69792, 0], // 保加利亚-索非亚

    '巴哈马': [-73.562575, 40.655271, 0], // 巴哈马-拿骚

    '南斯拉夫社会主义联邦': [18.423339, 43.796617, 0], // 黑塞哥维那-萨拉热窝

    '白俄罗斯': [27.564451, 53.975825, 0], // 白俄罗斯-明克斯

    '伯利兹': [12.849472, -4.571506, 0], // 中美洲国家伯利兹-贝尔莫潘

    '百慕大群岛': [-86.054972, 40.038827, 0], // 百慕大群岛-哈密尔顿

    '玻利维亚': [-78.332036, 22.082519, 0], // 玻利维亚-哈密尔顿

    '巴西': [-47.888777, -15.791724, 0], // 巴西-巴西利亚

    '文莱': [114.951828, 4.948475, 0], // 文莱-斯里巴加湾市

}

您好,我这个点是自定义的,而且导入只能导入geoJSON,不能直接导入JSON文件,但是其他的点位都是动态的,根据后端接口返回的数据在JSON查询出相应的点位进行渲染的,意思是我先将经纬度转换为EPSG3857的点位,然后在前端在用json查询出点位使用L.marker这个函数进行动态渲染吗?
...