Android开发笔记Google地图定位与路线显示
来源:互联网 发布:linux虚拟机安装jdk 编辑:程序博客网 时间:2024/04/27 17:14
当你的应用需要加入Google地图,并且需要根据两点坐标规划路线时,就需要在应用中加入Google地图,调用指定的api获取路线数据,再把数据显示出来。
1.加载google地图,实例化一个地图视图对象,地图操作管理对象,地图图层对象等。图层对象可以用于在指定坐标位置显示用户自定义的图标,以及用于显示路径。
LayoutInflater inflater = getLayoutInflater();
bubble = (LinearLayout) inflater.inflate(R.layout.map_bubble, mapView,false);
mapView = (MapView) findViewById(R.id.location_mapview);
mapView.setBuiltInZoomControls(true);
myMapController = mapView.getController();
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
mymapOverlay = new MapItemizedOverlay(this.getResources().getDrawable(R.drawable.my_pin), this, mapView, bubble, false);
frommapOverlay = new MapItemizedOverlay(this.getResources().getDrawable(R.drawable.pin_purple), this, mapView, bubble,false);
2.获取GPS定位或路径数据
3.解析数据并在地图上显示
一、在Google地图中定位用户当前的位置
1.获取用户当前位置,常用的定位方法即可。
long _15MinutesAgo = System.currentTimeMillis() - 15 * 60 * 1000;
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location == null || location.getTime() < _15MinutesAgo) {
location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
2.在地图上显示位置,即用经纬度构造一个地点坐标位置,并加入地图控制管理类的显示图层中,以及重新显示地图
double latitude = myLocation.getLatitude() * 1E6;
double longitude = myLocation.getLongitude() * 1E6;
GeoPoint myPoint = new GeoPoint((int) latitude, (int) longitude);
myMapController.animateTo(myPoint);
List<Overlay> mapOverlays = mapView.getOverlays();
OverlayItem item = new OverlayItem(myPoint, "Your Position", "");
mymapOverlay.clearOverlay();
mymapOverlay.addOverlay(item);
mapOverlays.add(mymapOverlay);
mapView.postInvalidate();
二、显示两点之间的路径
根据两个坐标位置信息获取路径数据,并将解码的路径显示与地图图层中
GeoPoint fromPoint = new GeoPoint((int) latitude, (int) longitude);
GeoPoint topoint = new GeoPoint((int) POINT_LAT, (int) POINT_LONG);
newDrawPath(fromPoint, topoint, Color.BLUE);//蓝色为路径的颜色
private void newDrawPath(final GeoPoint src, final GeoPoint dest,finalint color) {
new Thread() {
public void run() {
final List<GeoPoint> routepoints = getDrawPath(src, dest, color);
runOnUiThread(new Runnable() {
@Override
public void run() {
if (routepoints == null)
return;
drawPath(routepoints, color);
}
});
}
}.start();
}
获取的路径数据点,无法直接使用,需要进行解码。
List<GeoPoint> getDrawPath(final GeoPoint src, final GeoPoint dest,finalint color) {
// connect to map web service
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.google.com.hk/maps?output=dragdir");
urlString.append("&saddr=");// from
urlString.append(Double.toString((double) src.getLatitudeE6() / 1.0E6));
urlString.append(",");
urlString.append(Double.toString((double) src.getLongitudeE6() / 1.0E6));
urlString.append("&daddr=");// to
urlString.append(Double.toString((double) dest.getLatitudeE6() / 1.0E6));
urlString.append(",");
urlString.append(Double.toString((double) dest.getLongitudeE6() / 1.0E6));
urlString.append("&dirflg=r");
try {
String result = NetUtil.getResult(urlString.toString(), "US-ASCII");
return decodeJson(result);
} catch (IOException ex) {
}
return null;
}
显示路径
void drawPath(List<GeoPoint> routepoints, int color) {
GeoPoint gp1 = null;
GeoPoint gp2 = routepoints.get(0);
for (GeoPoint point : routepoints) {
gp1 = gp2;
gp2 = point;
mapView.getOverlays().add(new MapDirectionOverlay(gp1, gp2, 2, color));
}
}
- Android开发笔记Google地图定位与路线显示
- Android用户定位Google Map显示地图
- android google地图上overlay显示位置,路线
- Android Google地图上overlay显示位置,路线
- Android百度地图开发定位和路线导航
- Android开发--地图与定位应用--申请Google地图服务(API Key)
- 在google地图上显示路线
- 高德地图开发(一)显示地图与定位
- Android开发笔记----高德地图定位
- Android开发笔记之百度地图定位
- Android开发--定位服务与百度地图
- Android学习——百度地图开发定位与显示Demo
- Google Android创赢路线与产品开发实战
- C#的百度地图开发(四)前端显示与定位
- C#的百度地图开发 前端显示与定位
- Android 百度地图开发(定位,显示,测距)
- Android开发笔记(一百零三)地图与定位SDK
- android开发google地图
- 学习编程的5点忌讳
- HreoWinGauge2.0组件集应用示例----旋钮指针(1)
- Android ConditionVariable的用法
- Android系统中设置TextView的行间距(非行高)
- flex调用摄像头功能
- Android开发笔记Google地图定位与路线显示
- Java虚拟机类加载机制浅谈
- 【进程线程与同步】5.3 创建与联接线程
- JQuery操作单选按钮,复选框,下拉款的操作
- poj 1276 Cash Machine(多重背包+二进制优化)
- Struts2(9):为<action>指定method属性
- 浅析JVM内存结构和6大区域
- 算法分析:幸运数
- 系统找不到指定文件 No installed service name 'Apache2'