已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于百度地图SDK 的地图软件开发中的问题与注意事项(一) 最近我在研究基于百度地图SDK的安卓手机地图软件的开发。在百度地图SDK 官网上学习在地图图层上画自定义的几何图形是,我复制了demo中关于画矩形的代码,运行结果报错。经过一番研究发现示例demo中用Geometry的对象画一个矩形区域的时候,用的方法是setEnvelope,然而官网提供的sample中用的方法是setPolygon,修改为setPolygon后完美运行。 我自己写了一个简单的示例demo,我的Activity中有三个按钮,思路是点击第一个按钮后画线,点击第二个按钮后画多边形,点击第三个按钮后清除所有图层。我按照百度示例demo的代码编写完毕后运行,点击第一个按钮时可以画线,但当点击第二个画多边形的按钮后没有任何反应,当我再次点击第一个画线按钮后程序报错强退。这时我就纳闷了,因为百度提供的sample中的demo的代码和我差不多,然后我又看了一下官网的介绍。官网上关于GraphicsOverlay的介绍中提到,Geometry、Symbol、Graphic对象都不可复用,但是没有说GraphicsOverlay的对象,因此GraphicsOverlay的对象是可以复用的,简单分析下就能想到,GraphicsOverlay相当于一个图层,这个图层原则上是可以画很多图形的,因此我在两个按钮的单击事件中用的是同一个GraphicsOverlay对象。但是程序竟然报错了。于是我在两个按钮的单击事件中分别定义GraphicsOverlay对象,然后给各自的GraphicsOverlay对象setData()。再运行程序,愉快的解决了问题。 我再重新总结了我的代码和百度sample中提供的demo的区别,原来人家百度提供的demo的思路是单击一个按钮同时画多边形,线,矩形,因此提供一个GraphicsOverlay的对象足矣。而我的思路是画多边形和画线是在两个不同的事件中,不同的事件需要不同的GraphicsOverlay对象。如果只用一个GraphicsOverlay对象,程序就无法分辨我想要的是哪个GraphicsOverlay对象。 这只是一个小问题,因为我也是初学者,写下这篇文章权当给自己做个笔记,也提醒自己以后在学习的过程中不能盲目照搬。(附代码)package com.baidu.demo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.map.Geometry;import com.baidu.mapapi.map.Graphic;import com.baidu.mapapi.map.GraphicsOverlay;import com.baidu.mapapi.map.MapController;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.Symbol;import com.baidu.mapapi.map.Symbol.Color;import api.basestruct.GeoPoint;public class Mydrawdemo extends Activity BMapManager mBMapMan = null;MapView mMapView = null;Button drawline, myclear, drawrec = null;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);mBMapMan = new BMapManager(getApplication();mBMapMan.init(null);setContentView(R.layout.draw);mMapView = (MapView) findViewById(R.id.bmapView);mMapView.setBuiltInZoomControls(true);MapController mMapController = mMapView.getController();GeoPoint point = new GeoPoint(int) (39.915 * 1E6),(int) (116.404 * 1E6);mMapController.setCenter(point);mMapController.setZoom(12);drawline = (Button) findViewById(R.id.button2);myclear = (Button) findViewById(R.id.button1);drawrec = (Button) findViewById(R.id.button3);OnClickListener mylistener = new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubswitch (v.getId() case R.id.button3:GraphicsOverlay graphicsOverlay3 = new GraphicsOverlay(mMapView); mMapView.getOverlays().add(graphicsOverlay3);graphicsOverlay3.setData(drawrec();mMapView.refresh();break;case R.id.button2:GraphicsOverlay graphicsOverlay2 = new GraphicsOverlay(mMapView); mMapView.getOverlays().add(graphicsOverlay2);graphicsOverlay2.setData(drawline();mMapView.refresh();break;case R.id.button1:mMapView.getOverlays().clear();mMapView.refresh();break;drawline.setOnClickListener(mylistener);myclear.setOnClickListener(mylistener);drawrec.setOnClickListener(mylistener);protected Graphic drawrec() double mLat = 39.93923;double mLon = 116.357428;int lat = (int) (mLat * 1E6);int lon = (int) (mLon * 1E6);GeoPoint pt1 = new GeoPoint(lat, lon);mLat = 39.91923;mLon = 116.327428;lat = (int) (mLat * 1E6);lon = (int) (mLon * 1E6);GeoPoint pt2 = new GeoPoint(lat, lon);mLat = 39.89923;mLon = 116.347428;lat = (int) (mLat * 1E6);lon = (int) (mLon * 1E6);GeoPoint pt3 = new GeoPoint(lat, lon);mLat = 39.89923;mLon = 116.367428;lat = (int) (mLat * 1E6);lon = (int) (mLon * 1E6);GeoPoint pt4 = new GeoPoint(lat, lon);mLat = 39.91923;mLon = 116.387428;lat = (int) (mLat * 1E6);lon = (int) (mLon * 1E6);GeoPoint pt5 = new GeoPoint(lat, lon);GeoPoint polygonPoints = new GeoPoint5;polygonPoints0 = pt1;polygonPoints1 = pt2;polygonPoints2 = pt3;polygonPoints3 = pt4;polygonPoints4 = pt5;Geometry polygonGeometry = new Geometry();polygonGeometry.setPolygon(polygonPoints);Symbol polygonSymbol = new Symbol();Symbol.Color polygonColor = polygonSymbol.new Color();polygonColor.red = 0;polygonColor.green = 0;polygonColor.blue = 255;polygonColor.alpha = 126;polygonSymbol.setSurface(polygonColor, 1, 5);/ 生成Graphic对象Graphic polygonGraphic = new Graphic(polygonGeometry, polygonSymbol);return polygonGraphic;protected Graphic drawline() double mLat = 39.97923;double mLon = 116.357428;int lat = (int) (mLat * 1E6);int lon = (int) (mLon * 1E6);GeoPoint pt1 = new GeoPoint(lat, lon);mLat = 39.94923;mLon = 116.397428;lat = (int) (mLat * 1E6);lon = (int) (mLon * 1E6);GeoPoint pt2 = new GeoPoint(lat, lon);mLat = 39.97923;mLon = 116.437428;lat = (int) (mLat * 1E6);lon = (int) (mLon * 1E6);GeoPoint pt3 = new GeoPoint(lat, lon);/ 构建线Geometry lineGeometry = new Geometry();/ 设定折线点坐标GeoPoint linePoints = new GeoPoint3;linePoints0 = pt1;linePoints1 = pt2;linePoints2 = pt3;lineGeometry.setPolyLine(linePoints);/ 设定样式Symbol lineSymbol = new Symbol();Symbol.Color lineColor = lineSymbol.new Color();lineColor.red = 255;lineColor.green = 0;lineColor.blue = 0;lineColor.alpha = 255;lineSymbol.setLineSymbol(lineColor, 10);/ 生成Graphic对象Graphic lineGraphic = new Graphic(lineGeometry, lineSymbol);return lineGraphic;Overrideprotected void onPause() mMapView.onPause();super.onPause();Overrideprotected void onResume() mMapView.onResume();super.onResume();Overrideprotected void onDestroy() mMapView.destroy();super.onDestroy();Overrideprotected void onSaveI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年黑龙江省哈尔滨市单招职业适应性考试题库附答案
- 国家公务员(《行测》)历年真题库及答案(易错题)
- 《行测》(选词选择)历年真题库试卷及完整答案1套
- 公务员行政职业能力测试《行测》试题库及答案(新)
- 2026湖南株洲市教育局直属学校面向高校毕业生招聘教师5人考试备考题库附答案
- 百泉镇村(社区)后备干部招募考试题库及答案1套
- 安溪六中招聘编外合同制教师考试题库附答案
- 江苏省公务员考试《行测》题库(各地真题)
- 公务员考试备考《行测》专项训练题库及答案(必刷)
- 2026年甘孜职业学院单招职业技能测试题库附答案
- 知道智慧树西方文论经典导读满分测试答案
- 医药行业合规培训课件
- 水域事故紧急救援与处置预案
- 新能源汽车工程技术专业教学标准(高等职业教育本科)2025修订
- 四川省成都市2023级高中毕业班摸底测试英语试题(含答案和音频)
- 以歌为翼:中文歌曲在泰国小学汉语课堂的教学效能探究
- 2025-2030中国除湿干燥机行业应用趋势与需求规模预测报告
- 2025广东高考物理试题(大题部分)+评析
- 2025年中国国际货运代理行业市场情况研究及竞争格局分析报告
- 家庭教育概论 课件 第5章 亲子关系:家庭教育的起点与结果
- 500千伏输电线路工程项目管理实施规划
评论
0/150
提交评论