`

在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
分享到:
评论

相关推荐

    谷歌地图测量两点间直线距离

    4. 在两个标记之间,谷歌地图会自动显示两点间的直线距离,以公里(km)或英里(mi)为单位。这个距离是基于地球的平均半径计算的大圆距离。 在某些情况下,可能需要编程接口(API)来自动化或批量处理这种测量。...

    js基于谷歌地图API绘制可编辑圆形与多边形

    在这个项目中,"js基于谷歌地图API绘制可编辑圆形与多边形"是一个典型的示例,它展示了如何利用谷歌地图API创建交互式的地图元素,特别是用户可以编辑的圆形和多边形。 首先,谷歌地图API是谷歌提供的一套...

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

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

    Labview在线离线混合地图

    在线地图通常依赖于网络服务,如谷歌地图或百度地图,提供实时更新和丰富的信息。离线地图则是在本地存储的地图数据,适用于无网络或网络不稳定的情况。Labview在线离线混合地图结合两者优势,既能实现快速响应和...

    Google_Map_API谷歌地图.ppt

    1. **Google Maps API概念**:它是一套JavaScript库,可以嵌入到网页中,通过编程方式控制Google地图的行为,如加载地图、定位、标注等。 2. **“Hello, World”**:加载API的基本步骤包括在HTML文件中引入API库,...

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

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

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

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

    GoogleEarth生成基站地图操作说明[整理].pdf

    - 完成信息输入后保存文件,双击KML文件,用Google Earth打开即可显示绘制的基站地图。 通过以上步骤,用户可以在Google Earth中生成精确的基站分布图,这对于通信工程师、网络规划师或者地理信息系统分析人员来说...

    在谷歌地球上画图

    在谷歌地球上画图是一项实用的技能,尤其对GIS(地理信息系统)和地质专业的学生来说,它能帮助他们直观地展示和分析地理位置数据。谷歌地球是一款强大的虚拟地球仪应用,允许用户浏览全球各地的卫星图像,并进行一...

    基于Android的Google地图设计报告.docx

    - **显示两点一线**:此功能实现了在地图上绘制两点之间的直线,适用于简单的路径展示场景。 - **多点多线**:当需要展示多条路径或者多个位置时,此功能非常有用。 - **点击界面直接连线**:增强了用户的交互体验,...

    GOOGLE 测距,可以修改路线

    在谷歌地图中,用户可以通过点击地图上的点来添加路径点,系统会自动计算两点之间的直线距离。如果选择了驾车、步行或骑行模式,谷歌地图还会考虑到实际的道路网络,给出更贴近真实行驶的路线距离。这一功能对于...

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

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

    c# winform 地图应用源码

    开发者需要了解如何发送请求获取路线数据,解析返回的结果,并在地图上绘制路线。 5. **自动计算两点路径距离**:这是路径查询的一个子功能,可以独立于完整的路线规划提供两点间的直线距离或实际行驶距离。这通常...

    地图两点之间画线

    在地图上实现两点之间的线路绘制是一项常见的任务,尤其在地理信息系统(GIS)和导航应用中。这个过程涉及到坐标系统、地理编码、经纬度计算以及图形渲染等多个知识点。下面将详细介绍这些概念及其应用。 首先,...

    Android地图开发

    在Android平台上进行地图开发是一项重要的技能,特别是在移动应用开发领域,因为地图功能是许多应用程序的核心组成部分,例如导航、位置分享、周边服务搜索等。本文将深入探讨Android地图开发的关键知识点,包括集成...

    openseadragon标注圆形、矩形、直线、文字【完整demo版】

    OpenSeadragon是一款开源的JavaScript库,用于在网页上展示高分辨率图像,它采用Zoomify技术,能够提供平滑的缩放和平移体验,类似于谷歌地图的交互效果。本项目是一个基于OpenSeadragon实现的图形标注工具,支持...

    .net Labview 在线离线混合地图

    距离测量是另一个实用功能,它允许用户在地图上测量两点或多点之间的直线或路径距离。这需要对地图坐标进行转换和计算。在.NET中,我们可以利用GIS库提供的函数进行地理坐标转换,如WGS84到Web Mercator的转换。在...

    CSharpMap地图画区域判断省份

    在给定的标题“CSharpMap地图画区域判断省份”中,我们可以推测这是一个使用C#编程实现的地图应用,它具有在地图上绘制区域并判断省份的功能。以下将详细解释这个知识点的相关内容。 首先,我们需要理解地图画图的...

    Google Maps API开发大全code

    6. **路径(Polylines & Polygons)**:`google.maps.Polyline`用于绘制直线或多边形路径,常用于表示路线或边界。`google.maps.Polygon`则用于绘制封闭的多边形区域。 7. **地理编码(Geocoding)**:API提供了...

Global site tag (gtag.js) - Google Analytics