三 Android 程序开发——百度地图的使用 地图定位(定位+跟随+距离测量( 五 )

< -1.0) {distance = -1.0;}// 求大圆劣弧长度distance = DEF_R * Math.acos(distance);if (distance > 1000.0) {DecimalFormat df = new DecimalFormat("0.000");String dis = df.format(distance / 1000);return dis + "km";} else {DecimalFormat df = new DecimalFormat("0.000");String dis = df.format(distance);return dis + "m";}}
上述返回的类型的,如果需要比较的话,可以转换成型,看代码(写的略麻烦,,唉 按需求来)
//最远点的距离(String)longDistance = getLongDistance(user_latitude, user_longitude, max_distance_lat, max_distance_lon);LogUtil.e("hello--------", "最远点的距离:" + longDistance + "\n最远点的坐标" + max_distance_lat + "," + max_distance_lon);String substring = longDistance.substring(0, longDistance.length() - 1);if (substring.substring(substring.length() - 1).equals("k")) {max_distance = Double.parseDouble(substring.substring(0, substring.length() - 1)) * 1000;} else {max_distance = Double.parseDouble(substring.substring(0, substring.length() - 1));}
@4如何让所有的(标记点)“恰好” 全部显示在屏幕上,以自我为中心
1.首先说一下,百度地图的放大倍数和比例尺的关系
private int[] list = new int[]{10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, 2000000, 5000000};
对应的放大倍数分别为:20~3;
我的思路:1.首先定位当前 2.计算所有 与 自己的距离3.选择 最大的一个纬度差和最大的一个经度差 4.这样所有的点都可以显示了
1.定位当前
private void showUserLocation() {LatLng latLng = new LatLng(user_latitude, user_longitude);MapStatusUpdate msu= MapStatusUpdateFactory.newLatLng(latLng);map.animateMapStatus(msu);}
2.计算所有与自己的距离,获取最大纬度差和最大经度差
//判断纬度最远的距离if (Math.abs(destination_latitude - user_latitude) > sub_lat) {sub_lat = Math.abs(destination_longitude - user_longitude);max_distance_lat = destination_latitude;}//判断经度最远的距离if (Math.abs(destination_longitude - user_longitude) > sub_lon) {sub_lon = Math.abs(destination_longitude - user_longitude);max_distance_lon = destination_longitude;}
3.计算最大的距离值
//最远点的距离(String)longDistance = getLongDistance(user_latitude, user_longitude, max_distance_lat, max_distance_lon);LogUtil.e("hello--------", "最远点的距离:" + longDistance + "\n最远点的坐标" + max_distance_lat + "," + max_distance_lon);String substring = longDistance.substring(0, longDistance.length() - 1);if (substring.substring(substring.length() - 1).equals("k")) {max_distance = Double.parseDouble(substring.substring(0, substring.length() - 1)) * 1000;} else {max_distance = Double.parseDouble(substring.substring(0, substring.length() - 1));}
4.计算level,显示对应比例
for (int i = 0; i < list.length; i++) {if (max_distance > list[i]) {scale--;}}//定位当前,并放大适应的比例LatLng latLng = new LatLng(user_latitude, user_longitude);MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(scale + 2f);// 设置地图放大比例map.setMapStatus(msu);msu = MapStatusUpdateFactory.newLatLng(latLng);map.animateMapStatus(msu);
最后这个例子有一些偏差,希望会的朋友提醒一下,,官方那个先不使用