`

在Google地图上绘制直线

 
阅读更多


 mars chen 老师第三季视频 08集

绘制路线的步骤

  1.确定路线的起始和终止的经纬度坐标

  2在起点和终点上绘制图标

  3将经纬度坐标换算成屏幕上x轴/y轴坐标

  4在起点和终点绘制直线

代码如下:

public class MainActivity extends MapActivity {

	private GeoPoint beginGeoPoint;
	private GeoPoint endGeoPoint;
	
	private MapController mapController;
	private List<Overlay> overlays;
	private Projection projection;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //指定起始和终止位置经纬度
        beginGeoPoint=new GeoPoint(19240000,-99120000);
        endGeoPoint=new GeoPoint(19340000,-99220000);
        
        MapView mapView=(MapView)findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        
        //对地图进行控制
        mapController=mapView.getController();
        overlays=mapView.getOverlays();
        projection=mapView.getProjection();
        
        overlays.add(new PointOverlay(beginGeoPoint));
        overlays.add(new PointOverlay(endGeoPoint));
        overlays.add(new LineOverlay(beginGeoPoint,endGeoPoint));
        
        //
        mapController.animateTo(beginGeoPoint);
        mapController.setZoom(12);
        
    }

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}
	
	
	//该类对象用于在地图上绘制线条 
	class LineOverlay extends Overlay{
		private GeoPoint begin;
		private GeoPoint end;
		
		public LineOverlay() {
		
		}

		public LineOverlay(GeoPoint begin, GeoPoint end) {
			this.begin = begin;
			this.end = end;
		}

		
		//canvas画布 paint画笔
		@Override
		public void draw(Canvas canvas, MapView mapView, boolean shadow) {
			super.draw(canvas, mapView, shadow);
			Paint paint=new Paint();
			paint.setColor(Color.BLUE);
			paint.setStyle(Paint.Style.FILL_AND_STROKE);
			paint.setStrokeWidth(2);
			Point beginPoint=new Point();
			Point endPoint=new Point();
			Path path=new Path();
			projection.toPixels(beginGeoPoint,beginPoint);
			projection.toPixels(endGeoPoint, endPoint);
			path.moveTo(endPoint.x, endPoint.y);
			path.lineTo(beginPoint.x, beginPoint.y);
			canvas.drawPath(path, paint);
		}
		
		
		
	}
	
	//绘制图标
	class PointOverlay extends Overlay{
		
		private GeoPoint geoPoint;
		

		public PointOverlay() {
			
		}

		
		public PointOverlay(GeoPoint geoPoint) {
			super();
			this.geoPoint = geoPoint;
		}

		@Override
		public void draw(Canvas canvas, MapView mapView, boolean shadow) {
			super.draw(canvas, mapView, shadow);
			Point point=new Point();
			projection.toPixels(geoPoint,point);
			Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.tool);
			Paint paint=new Paint();
			canvas.drawBitmap(bmp, point.x, point.y-10,paint);
		}
		
	}
}

 

效果图:

 

 最近有点忙,等有时间了。一定好好琢磨琢磨,写个漂亮实用的地图出来。先记录下来,备忘。

 

  • 大小: 168.1 KB
分享到:
评论

相关推荐

    GoogleEarth基站扇区绘制工具V3.6.rar

    本工具为《GoogleEarth基站扇区绘制工具(YZL)》V3.5版,实现EXCEL表 中直接生成KML文件,方便在Googffiearth中显示基站相关信息,方便无线规 划和优化专业冋仁更加形象的了解相关情况。该工具的主要功能如下:本...

    电脑离线地图标注软件卫星地图 免费下载

    支持谷歌在线(离线)混合卫星地图,普通地图,地形地图,微软电子地图,微软卫星地图,bing地图,在软件界面上可以选择地图类型切换; 2.支持1-20级的地图随意缩放,鼠标右键拖动漫游。 3.支持名称查询定位,可以...

    电子地图沙盘软件 v3.6官方版.zip

    10.支持在地图上绘制直线,曲线,虚线等等,各种图形,支持添加自定义图片。 11.支持数据的批量导出和导入。 12.支持树形结构设置层级。 电子地图沙盘软件使用方法 双指双击屏幕可缩小视图 使用双指开合或旋转...

    GoogleEarth基站扇区绘制工具(YZL)V3.6

    5、直接生成kml文件(然后可以在ge中导出kmz文件,以方便图片等等在不同机器之间的转移) 6、实现了点样式、直线样式、面域样式的样式选择控制 7、采用大地主题解算算法计算小区扇区(直线)图形,更加准确。 xzf...

    fishtagdisplay:用谷歌地图显示标记鱼的运动

    电子标签和传统标签的位置数据显示在同一张地图上。 。 它旨在轻松适应不同的数据。 主要特征动画是标记鱼的相对运动速率的表示。 假设传统标签以恒定速度沿直线从释放点移动到重新捕获点。 电子标签的轨迹是基于从...

    谷歌开源的ROS 系统支持的 SLAM 库 Cartographer.zip

    Cartographer,是Google开源的一个ROS系统支持的2D和3D SLAM(simultaneous localization and mapping)库。...在产业界和学术界常见的传感器配置上,Cartographer 能实时建立全局一致的地图。 标签:谷歌

    Dijkstra-s-algorithm:Dijkstra最短路径算法的Java实现

    此外,每次我们通过Google地图导航时,都会使用基于Dijkstra的复杂算法为我们提供最佳路线。 ****实施Dijkstra算法在这个简短的项目中,我们实现了Dijkstra的算法。 我们已经获得了GUI的数据和一些代码,该GUI生成...

    ggplot2:数据分析与图形艺术

    , geom_polygon()提速,比如世界地图的绘制快了12倍左右。, 新增部分主题,比如theme_minimal(),theme_classic()。, 本书的所有代码和图片都是针对新版本0.9.3的,在内容方面也根据版本更新对原文做了适当的增删...

    arcgis工具

    例如,选择与道路相交的荒地,选择的结果将包括该道路在其边界范围之内或在其边界之上的所有荒地。 在…距离范围内(Are within a distance of) 这一方法将选择同一图层或不同图层上相邻或邻近的要素。例如,...

    精通ANDROID 3(中文版)1/2

    13.1.4 ContentProvider在主线程上运行  13.1.5 单一主线程的影响  13.1.6 线程池、ContentProvider、外部服务组件  13.1.7 线程实用程序:发现线程  13.2 处理程序  13.2.1 持有主线程的影响  13.2.2 ...

    精通Android 3 (中文版)2/2

    13.1.4 ContentProvider在主线程上运行  13.1.5 单一主线程的影响  13.1.6 线程池、ContentProvider、外部服务组件  13.1.7 线程实用程序:发现线程  13.2 处理程序  13.2.1 持有主线程的影响  13.2.2 ...

Global site tag (gtag.js) - Google Analytics