wxszh wxszh
关注数: 15 粉丝数: 8 发帖数: 118 关注贴吧数: 13
急求各位高手请帮忙:android怎么绘制实时运行轨迹? 不知道大家用过阿迪达斯的micoach没有,小弟的项目需要实现里面类似的功能,首先显示当前车辆的运行位置,同时将之前经过的路径描绘出来,我目前写的实现方法只能描绘出当前坐标点与前一次坐标点之间的轨迹,再之前的轨迹会被新的轨迹覆盖掉,不知道是哪个地方有错误,请高手指出。脚本是直接在百度地图的SAMPLE里面改的,修改的是ItemizedOverlayDemo类,请大家帮忙。我现在是每次收到定位信息都添加一个OVERLAY,不知道有没有办法每次收到定位后,在原来的OVERLAY继续绘图?或是有更好的解决办法? package com.baidu.mapapi.demo; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Path; import android.graphics.Point; import android.graphics.drawable.Drawable; import android.location.Location; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.Toast; import com.baidu.mapapi.*; public class ItemizedOverlayDemo extends MapActivity { static View mPopView = null; // 点击mark时弹出的气泡View static MapView mMapView = null; LocationListener mLocationListener = null;//onResume时注册此listener,onPause时需要Remove private GeoPoint newgp=null, oldgp=null;// 连线的点 MyLocationOverlay mLocationOverlay = null; //定位图层 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mapviewdemo); BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication(); if (app.mBMapMan == null) { app.mBMapMan = new BMapManager(getApplication()); app.mBMapMan.init(app.mStrKey, new BMapApiDemoApp.MyGeneralListener()); } app.mBMapMan.start(); // 如果使用地图SDK,请初始化地图Activity super.initMapActivity(app.mBMapMan); mMapView = (MapView)findViewById(R.id.bmapView); mMapView.setBuiltInZoomControls(true); //设置在缩放动画过程中也显示overlay,默认为不绘制 mMapView.setDrawOverlayWhenZooming(true); MapController mapController = mMapView.getController(); mapController.zoomIn(); mapController.zoomIn(); // 添加定位图层 mLocationOverlay = new MyLocationOverlay(this, mMapView); mMapView.getOverlays().add(mLocationOverlay); // 注册定位事件 mLocationListener = new LocationListener(){ @Override public void onLocationChanged(Location location) { if (location != null){ oldgp = newgp; newgp = new GeoPoint((int)(location.getLatitude()*1e6), (int)(location.getLongitude()*1e6)); mMapView.getController().animateTo(newgp); if(oldgp!=null) { MyOverlay myOverlay=new MyOverlay(); mMapView.getOverlays().add(myOverlay); Log.e("1", String.valueOf(mMapView.getOverlays().size()));
1 下一页