1、简介:
GeoHash是一种地址编码方法。他能够把二维的空间经纬度数据编码成一个字符串
2、实现:
网上相关原理介绍很多,不赘述,简单介绍下使用。
其中geohash的编码长度对应表如下:
我使用的是github上的开源项目:
https://github.com/kungfoo/geohash-java
测试代码:
// 纬度坐标 wt3mf9qu
double lat = 30.549608;
// 经度坐标 (30.549631118774414,114.37711715698242)
double lon = 114.376972;
// Geohash编码字符的长度(最大为12)
int precision = 3;
GeoHash geoHash = GeoHash.withCharacterPrecision(lat, lon, precision);
//中心点坐标
WGS84Point boundingBoxCenter = geoHash.getBoundingBoxCenter();
System.out.println(boundingBoxCenter);
//东西南北坐标
BoundingBox boundingBox = geoHash.getBoundingBox();
System.out.println(boundingBox);
String binaryCode = geoHash.toBinaryString(); // 使用给定的经纬度坐标生成的二进制编码
System.out.println("经纬度坐标: (" + lat + ", " + lon + ")");
System.out.println("二进制编码:" + binaryCode);
String hashCode = geoHash.toBase32(); // 使用给定的经纬度坐标生成的Geohash字符编码
System.out.println("Geohash编码:" + hashCode);
前端代码比较简单,就不在赘述了,
思路:根据测试代码中获取到的东西南北坐标和中心点坐标,前端传入坐标调用接口获取,然后画图即可
功能很简单,如下图: