我是android的新手,我开始使用地图和
我的情况是:每当我在地图中放置一个标记时,它应该根据其纬度和经度(可能是字母数字)为该地点生成代码(如密码)
我的问题是:当我从一个地方取得刻度和经度(例如:12.828435,80.218367)时,我应该将它们转换为可能的最小字母数字代码并显示给用户(例如:abcd4frt)
我不知道这个想法是否可以按照我上面描述的方式实施。
请告诉我你的想法
答案 0 :(得分:4)
此答案假定纬度和经度表示为8位小数。
以下内容将您的经度编码为36:
//convert longitude to an int, depending on what form it's in
String encodedLongitude = Integer.toString(longitude, 36);
这将解码它:
int longitude = Integer.valueOf(encodedLongitude, 36);
//convert longitude back to decimal.
要将它们连接在一起,您可以使用任何非字母数字分隔符。你不能只是将它们塞在彼此旁边,因为编码的字符串并不总是相同的长度。
或者你可以说:
long longLat = latitude + longitude * Math.pow(10, 8); //shift the longitude 8 places, and add to latitude
String encodedLongLat = Long.toString(longLat, 36);
然后解码:
long longLat = Long.valueOf(encodedLongLat, 36);
long longitude = longLat / Math.pow(10, 8);
long latitude = longLat % Math.pow(10, 8);