评论

使用开源地图组件leafletwx加载自制手绘地图

使用开源的leafletwx组件加载自制的手绘地图

leafletwx是基于leaflet,使用微信原生组件开发的一套开源地图组件,目的是替换小程序内的原生map组件,项目开源地址:leatletwx
 本示例开源地址在leafletwx的mymap页面。


加载自制手绘地图效果:




如何将手绘地图转换为瓦片

可以使用gdal,安装成功后,使用命令

项目地址:gdal2tiles-leaflet

切分瓦片(使用gdal): gdal2tiles-l.py -l -p raster -z 1-3 -w none [source_image] [target_dir]

例如:gdal2tiles-l.py -l -p raster -z 1-3 -w none 1.jpg out

即可生成瓦片地图数据

如果需要在不同的地图层级加载不同的地图细节,可以制作两张大小一样的地图图片,生成不同的层级即可


图片坐标与地理坐标如何转换

图片坐标点与地理坐标点互转方法如下(引入的库在组件内可以找到,须知道原始图片大小和图片左上角及右下角分别对应的地理坐标):

import {LagLngPoint} from './LagLng.Utils'
import {latLng2xy, xy2latLng} from './utils/util'

// 图片坐标点转地理坐标点
function rasterImage2latLng(imgPosition, imgSize, leftUpLatLng, rightDownLatLng) {
  let latLng = new LagLngPoint(0, 0);
  let _imgPos = [
    Math.max(0, Math.max(imgSize[0], imgPosition[0])),
    imgSize[1] - Math.max(0, Math.max(imgSize[1], imgPosition[1])),
  ];
  const ag = xy2latLng(_imgPos[0], _imgPos[1], 0, 0, imgSize[0], imgSize[1], leftUpLatLng.longitude, leftUpLatLng.latitude, rightDownLatLng.longitude, rightDownLatLng.latitude);
  latLng.longitude = ag.lon;
  latLng.latitude = ag.lat;
  return latLng;
}
// 地理坐标点转图片坐标点
function latLng2rasterImage(latLng, imgSize, leftUpLatLng, rightDownLatLng) {
  let imgPosition = [0, 0];
  const minLng = Math.min(leftUpLatLng.longitude, rightDownLatLng.longitude);
  const maxLng = Math.max(leftUpLatLng.longitude, rightDownLatLng.longitude);
  const minLat = Math.min(leftUpLatLng.latitude, rightDownLatLng.latitude);
  const maxLat = Math.max(leftUpLatLng.latitude, rightDownLatLng.latitude);
  let lng = Math.min(maxLng, Math.max(latLng.longitude, minLng));
  let lat = Math.min(maxLat, Math.max(latLng.latitude, minLat));
 
  let xy = latLng2xy(lng, lat, 0, 0, imgSize[0], imgSize[1], leftUpLatLng.longitude, leftUpLatLng.latitude, rightDownLatLng.longitude, rightDownLatLng.latitude)
  return [Math.round(xy.x), Math.round(xy.y)];
}


最后一次编辑于  2023-09-01  
点赞 1
收藏
评论

2 个评论

  • PIG
    PIG
    2023-10-09

    大佬uniapp版有手绘图示例嘛

    2023-10-09
    赞同
    回复
  • 莫忘初衷
    莫忘初衷
    2023-05-30

    使用 gdal2tiles.py 脚本生成的地图瓦片引用报错,求指教

    2023-05-30
    赞同
    回复 1
    • 莫忘初衷
      莫忘初衷
      2023-05-30
      已解决
      2023-05-30
      1
      回复
登录 后发表内容