`
大头K
  • 浏览: 188350 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

在百度地图上选位置,并在上面显示覆盖物

阅读更多
之前听说百度地图有这么一个功能(在地图上选取位置),一直没时间去看看怎么实现,刚好手头上项目需要这个功能,下午抽个空看了一下,集成到项目当中。

先看效果图,这两张图片上的红点就是我点击的地方。当然,我既然可以在上面加个覆盖物,那这个点的坐标肯定可以得到的。



上代码:
/**
 * 在百度地图上选择点
 * @author ck
 * @since 2014年2月23日 21:33:41
 */
public class CopyOfSelectPointInMap extends Activity
{
	// MapView 是地图主控件
	private MapView mMapView = null;

	// 用MapController完成地图控制
	private MapController mMapController = null;

	// 地图覆盖物
	private MyOverlay mOverlay = null;
	// 装覆盖物
	private ArrayList<MyOverlay> items;

	// MKMapViewListener 用于处理地图事件回调
	MKMapViewListener mMapListener = null;

	// 用于截获屏坐标
	MKMapTouchListener mapTouchListener = null;

	// 当前地点击点
	private GeoPoint currentPt = null;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_mapcontrol);

		initialize();

		initializeViews();

		initializeListeners();
	}

	private void initialize()
	{
		MyApplication app = (MyApplication) this.getApplication();
		if (app.mBMapManager == null)
		{
			app.mBMapManager = new BMapManager(getApplicationContext());
			app.mBMapManager.init(MyApplication.strKey,
					new MyApplication.MyGeneralListener());
		}

		items = new ArrayList<CopyOfSelectPointInMap.MyOverlay>();
	};

	private void initializeViews()
	{
		mMapView = (MapView) findViewById(R.id.bmapView);
		mMapController = mMapView.getController();
		mMapController.enableClick(true);
		mMapController.setZoom(15);

		// 默认跳到天安们
		double cLat = 39.945;
		double cLon = 116.404;
		GeoPoint p = new GeoPoint((int) (cLat * 1E6), (int) (cLon * 1E6));
		mMapController.setCenter(p);
	};

	private void initializeListeners()
	{
		/**
		 * 设置地图点击事件监听
		 */
		mapTouchListener = new MKMapTouchListener()
		{
			@Override
			public void onMapClick(GeoPoint point)
			{
				currentPt = point;
				updateMapState();
			}

			@Override
			public void onMapDoubleClick(GeoPoint point)
			{
			}

			@Override
			public void onMapLongClick(GeoPoint point)
			{
			}
		};
		mMapView.regMapTouchListner(mapTouchListener);
	};

	// 更新地图的状态
	private void updateMapState()
	{
		if (mOverlay == null)
		{
			// 创建自定义overlay
			mOverlay = new MyOverlay(getResources().getDrawable(
					R.drawable.line_end), mMapView);
			OverlayItem item1 = new OverlayItem(currentPt, "覆盖物1", "");
			mOverlay.addItem(item1);
			items.add(mOverlay);

			mMapView.getOverlays().add(mOverlay);
		} else
		{
			mOverlay.removeAll();

			OverlayItem item1 = new OverlayItem(currentPt, "覆盖物1", "");
			mOverlay.addItem(item1);
			items.add(mOverlay);
		}

		mMapView.refresh();

	}

	/**
	 * 自定义覆盖物
	 */
	public class MyOverlay extends ItemizedOverlay
	{
		public MyOverlay(Drawable defaultMarker, MapView mapView)
		{
			super(defaultMarker, mapView);
		}

		@Override
		public boolean onTap(int index)
		{
			return true;
		}

		@Override
		public boolean onTap(GeoPoint pt, MapView mMapView)
		{
			return false;
		}

	}

	@Override
	protected void onPause()
	{
		mMapView.onPause();
		super.onPause();
	}

	@Override
	protected void onResume()
	{
		mMapView.onResume();
		super.onResume();
	}

	@Override
	protected void onDestroy()
	{
		mMapView.destroy();
		super.onDestroy();
	}

	@Override
	protected void onSaveInstanceState(Bundle outState)
	{
		super.onSaveInstanceState(outState);
		mMapView.onSaveInstanceState(outState);

	}

	@Override
	protected void onRestoreInstanceState(Bundle savedInstanceState)
	{
		super.onRestoreInstanceState(savedInstanceState);
		mMapView.onRestoreInstanceState(savedInstanceState);
	}

}


代码不多,但是注意的地方还是有的,比如生命周期一定要加上,每次点击添加覆盖物的时候记得先把之前的清掉,还有,你造吗?每次一进入就看到天安们你TM在逗我吧!
  • 大小: 421.3 KB
分享到:
评论

相关推荐

    百度地图覆盖物和我的位置显示

    综上所述,百度地图API为开发者提供了强大的工具,使我们可以轻松地在地图上添加个性化元素,如覆盖物,以及显示用户的位置。通过不断学习和实践,你可以创建出更加交互和生动的地图应用。如果你对某个部分还有疑问...

    百度地图类库 自定义覆盖物

    1. **坐标点**:每个覆盖物都需要一个地理位置坐标来确定其在地图上的位置。在百度地图API中,坐标通常是LatLng对象,包含经度和纬度。 2. **文字内容**:覆盖物显示的文字信息,可以是地点名称、描述或其他相关...

    百度地图覆盖物的运用

    覆盖物是百度地图API中的一个重要元素,它允许用户在地图上添加自定义的图形元素,如图标、文字、图片或者自定义形状。这些元素可以用来标记特定位置、展示数据信息或者增强地图的视觉效果。例如,你可以用覆盖物来...

    百度地图无限个多边形覆盖物实例代码

    本代码的功能为:实现在地图上任意新建无限个可拖拽编辑的多边形覆盖物,同时为了方便与后台传递多边形的路径点参数,在新建多边形覆盖物的同时新建input元素。同时本代码实例补充了百度地图API功能,实现在多边形...

    百度地图绘制多边形几何图形并保存坐标转成覆盖物

    本话题聚焦于如何使用百度地图API来绘制多边形几何图形,并将这些图形的坐标保存,以便后续转化为地图上的覆盖物。下面将详细阐述这一过程。 首先,我们要了解百度地图API的核心功能。百度地图API提供了丰富的地图...

    百度地图自定义水波纹(雷达)效果覆盖物

    总之,通过百度地图API的自定义覆盖物功能,我们可以自由地在地图上添加各种视觉元素,如水波纹或雷达效果,以满足特定的应用需求。理解并掌握这个过程,不仅可以提升地图应用的互动性和吸引力,还能锻炼我们的编程...

    android百度地图标注覆盖物和覆盖物点击出现对话框的实现

    7. **区域全覆盖功能**:如果需要在地图上显示一个自定义的区域,可以使用多边形覆盖物(`Polygon`)。通过设定一系列坐标点,可以绘制出任意形状的区域。同时,也可以为这个多边形添加点击事件,实现点击后的交互...

    百度地图API,获取可编辑圆形覆盖物点坐标,实现收缩并实时显示半径

    百度在线地图,绘制圆形覆盖物且可进行编辑,实现收缩并实时显示半径

    百度地图V3.6.0系列——覆盖物和InfoWindow

    首先,覆盖物是百度地图API中的一个重要概念,它允许开发者在地图上添加自定义的图形元素,如标记(Marker)、多边形、圆形等,以实现个性化地图展示。在V3.6.0版本中,创建覆盖物通常需要以下步骤: 1. 引入百度...

    百度地图api定位 添加在覆盖物

    4. **在地图上显示布局(RelativeLayout)**:如果你希望在地图上显示一个`RelativeLayout`或者其他布局,你可以将这个布局作为覆盖物添加到地图上。首先,将布局转换为位图,然后创建一个`BitmapDescriptor`对象,...

    高端百度地图开发:自定义覆盖物水滴头像(鼠标事件、API封装对接)

    自定义标注覆盖物(Custom Overlay)是百度地图中的一种功能,它允许开发者在地图上绘制自定义的标记物,以更符合自己的业务需求和设计风格。通过自定义标注覆盖物,你可以在地图上添加各种类型的标记,如图标、文字...

    百度地图实现自定义覆盖物等功能

    自己做的一个综合实例,包括自定义覆盖物 地图单击弹窗 提示信息等功能 。唯一遗憾的是没有实现标注物聚合。这里给出网址大家可以自己研究下http://my.eoe.cn/imesong/archive/21397.html

    安卓天地图(标绘,测量,显示覆盖物,气泡弹窗,arcgis)示例

    安卓天地图(标绘,测量,显示覆盖物,气泡弹窗,arcgis)示例安卓天地图(标绘,测量,显示覆盖物,气泡弹窗,arcgis)示例安卓天地图(标绘,测量,显示覆盖物,气泡弹窗,arcgis)示例安卓天地图(标绘,测量,...

    百度地图之定位、覆盖物、编码

    开发者可以调用其`getCurrentPosition`方法来请求用户的当前位置,并通过回调函数处理返回的结果,展示在地图上。 其次,“覆盖物”是百度地图上的一个重要概念,它指的是地图上的点、线、面等可视化元素。例如,你...

    Android百度地图覆盖物和弹出泡泡

    首先,地图覆盖物(Marker)是在地图上展示的一种图形元素,可以用来表示特定的位置或者信息。例如,我们可以用覆盖物表示商店、公交站等地点。创建覆盖物通常涉及以下几个步骤: 1. 引入百度地图SDK:在Android...

    百度地图几何覆盖物

    在地图应用中,几何覆盖物是指在地图上以特定图形表示的地理位置或区域。通过使用百度地图API,我们可以动态地在地图上添加这些几何对象,以显示兴趣点、路径或者特定区域的边界。 1. **点覆盖物**: 在百度地图...

    如何在vue中使用百度地图添加自定义覆盖物(水波纹)

    具体的应用场景简而言之就是需要我们在地图上添加如图中所示的自定义覆盖物。实现的过程作者分为以下两点给大家介绍介绍。 水波紋的实现 自定义覆盖物的实现 水波紋的实现 这个需求的实现肯定是离不开我们自己写...

    百度地图POI检索覆盖物相关类

    覆盖物是在地图上显示自定义图形元素的重要方式,如图标、标注、热力图等。在百度地图API中,`MapView`类是地图的主要展示容器,而`Overlay`和`OverlayOptions`则是处理覆盖物的基础类。`Overlay`负责在地图上绘制和...

    Map覆盖物添加demo

    在地图服务中,覆盖物通常指的是在地图图像之上显示的任何自定义元素,如图标、标注、图形或动态数据。它们可以用来表示地点、事件、路线或其他具有地理位置信息的数据。Map覆盖物的添加使得开发者能够个性化地图,...

    百度地图覆盖物

    "百度地图覆盖物"这一主题主要涉及如何在百度地图上添加个性化图标、文本或者自定义图形,以展示特定位置的信息或者进行视觉上的标识。这些覆盖物可以是标记(Marker)、信息窗口(InfoWindow)或者其他自定义形状,...

Global site tag (gtag.js) - Google Analytics