您的位置:首页 > 编程语言 > Java开发

凯立德地图 将地理坐标转换为经纬度

2017-12-31 14:49 716 查看
前言:因项目需求以及客户提出的要求要将百度地图更换为凯立德地图,因此就牵扯到经纬度转换的问题,凯立德官方文档对这方面提供的信息少,没有找到合适的解决方案,所以在几经周折总算是找到一个比较委托的解决办法。

地理坐标:437438300,134912100
(第一个参数代表经度,第二个代表维度)

K码:8q91f4apv

经纬度:121.42437,37.415793

(参数仅供参考)

说明

凯立德地图 api 获取地理坐标以及K码都有相应的api,大家可以尽情调取,这里只根据K码转换为经纬度

因此请看转换的demo(java代码)

============================================================

由凯立德 k码 转换为经纬度

public class KCode {

private double longitude;
private double latitude;
private byte[] map34 = new byte[123];

public KCode() {
map34['0'] = 0;
map34['1'] = 1;
map34['2'] = 2;
map34['3'] = 3;
map34['4'] = 4;
map34['5'] = 5;
map34['6'] = 6;
map34['7'] = 7;
map34['8'] = 8;
map34['9'] = 9;
map34['a'] = 10;
map34['b'] = 11;
map34['c'] = 12;
map34['d'] = 13;
map34['e'] = 14;
map34['f'] = 15;
map34['g'] = 16;
map34['h'] = 17;
map34['i'] = 18;
map34['j'] = 19;
map34['k'] = 20;
map34['m'] = 21;
map34['n'] = 22;
map34['p'] = 23;
map34['q'] = 24;
map34['r'] = 25;
map34['s'] = 26;
map34['t'] = 27;
map34['u'] = 28;
map34['v'] = 29;
map34['w'] = 30;
map34['x'] = 31;
map34['y'] = 32;
map34['z'] = 33;
}

public double getLongitude() {
return longitude;
}

public double getLatitude() {
return latitude;
}
//
private int pow34(int i)
{
int sum = 1;
while(i > 0)
{
sum *= 34;
--i;
}
return sum;
}
//
private int Convert34to10(String str34)
{
int sum = 0;
for(int i = 0; i < str34.length(); ++i)
{
if( (str34.charAt(i) != 'l' && str34.charAt(i) != 'o') &&
((str34.charAt(i) >= '0' && str34.charAt(i) <= '9') ||
(str34.charAt(i) >= 'a' && str34.charAt(i) <= 'z'))
)
{
sum += map34[ str34.charAt(i)] * pow34(i);
}
else
{
System.out.println("invalid chaa");
return -1;
}
}
return sum;
}
//
public int Convert(String kcode)
{
if(kcode.length() != 9)
{
return -1;
}

int lut,lat;

char quad = kcode.charAt(0);
switch(quad)
{
case '5':
lut = Convert34to10(kcode.substring(1, 5));
lat = Convert34to10(kcode.substring(5, 9));
longitude = (double)lut / (3600 * 10) + 105;
latitude = (double)lat / (3600 * 10) + 40;
break;
case '6':
lut = Convert34to10(kcode.substring(1, 5));
lat = Convert34to10(kcode.substring(5, 9));
longitude = (double)lut / (3600 * 10) + 70;
latitude = (double)lat / (3600 * 10) + 40;

break;
case '7':
lut = Convert34to10(kcode.substring(1, 5));
lat = Convert34to10(kcode.substring(5, 9));
longitude = (double)lut / (3600 * 10) + 70;
latitude = (double)lat / (3600 * 10) + 5;

break;
case '8':
lut = Convert34to10(kcode.substring(1, 5));
lat = Convert34to10(kcode.substring(5, 9));
longitude = (double)lut / (3600 * 10) + 105;
latitude = (double)lat / (3600 * 10) + 5;
break;
default:
}
return 0;
}

public static void main(String[] args) {
KCode code = new KCode();
code.Convert("8q91f4apv");

System.out.println(code.getLongitude());
System.out.println(code.getLatitude());
}
} 上述代码仅供参考。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 地图
相关文章推荐