自托管地图服务 · 调用示例

所有功能都不需要任何第三方地图 Key。下面的按钮会直接调用本机服务,可即时看到返回结果。

1. 逆地理编码:坐标 → 地址 纯离线

点击「解析地址」查看结果
DSHMap.create({ base: 'http://127.0.0.1:8130' })
  .regeo(31.2304, 121.4737)          // 或 { coord: 'gcj02' }
  .then(r => console.log(r.formatted.address));  // 上海市黄浦区

逆地理编码完全由本地行政区划索引回答(2874 个区县),不联网、无 Key、无限速。

2. 搜索 / 地址解析 离线优先 + 在线兜底

点击「搜索」查看结果
map.search('上海外滩', { limit: 8 }).then(r => console.log(r.results));
map.suggest('浦').then(r => console.log(r.suggestions));   // 纯离线,适合绑定 input

3. 距离计算

点击「计算」查看结果
map.distance({lat:31.2304,lon:121.4737}, [{lat:39.9,lon:116.39}])
   .then(r => console.log(r.results[0].km));

4. 坐标系转换

点击「转换」查看结果

WGS-84 与 GCJ-02 在上海相差约 216m / 430m,混用会造成明显偏移,务必显式声明坐标系。

5. 地图选点 可嵌入 iframe

下面就是选点页面的实时嵌入(iframe)。拖动地图选择位置,服务端会实时解析地址;点「确定选点」后用 postMessage 把结果回传。

尚未收到选点结果
// 一行嵌入,返回 Promise,用户点「确定选点」时 resolve
DSHMap.create().mountPicker('#container')
  .then(p => console.log(p.address, p.lat, p.lon));

6. 瓦片服务 统一入口

点击按钮查看
<!-- Leaflet 直接用;客户端无需知道上游是谁 -->
L.tileLayer(map.tileUrl('street'), { maxZoom: 21 }).addTo(map);

<!-- 原始 URL(注意 coord=wgs84 时服务端会自动换算成 GCJ-02) -->
/tile/street/{z}/{x}/{y}.png?coord=wgs84

服务端带内存 + 磁盘两级缓存。第三方地图的调用全部发生在服务端,客户端只见你自己的域名。

7. 服务状态

点击查看