`
大头K
  • 浏览: 186284 次
  • 性别: 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
分享到:
评论

相关推荐

    百度地图覆盖物

    本次我们关注的是"百度地图覆盖物"这一主题,这涉及到百度地图SDK中的一个重要概念——如何在地图上添加自定义的可视元素,如图标、文本或者更复杂的图形,以展示特定的信息或实现特定的功能。 首先,我们要理解...

    web端js百度地图自定义maker覆盖物_鼠标悬停展示行政区域高亮

    4. **地图覆盖物**:覆盖物是百度地图API中的一个重要概念,它可以在地图上添加自定义的图形或图片,比如标记、信息窗口等。开发者可以自定义覆盖物的样式和行为,以满足各种需求。 5. **自定义覆盖物**:在本案例...

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

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

    百度地图覆盖物的运用

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

    百度地图自定义覆盖物

    3. **添加覆盖物到地图**:在地图的`MapView`上,使用`MapView.getOverlays().add(overlay)`将自定义的覆盖物添加到地图上。 4. **更新地图**:添加覆盖物后,调用`MapView.invalidate()`方法刷新地图,使覆盖物...

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

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

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

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

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

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

    百度地图4.1_1覆盖物线条

    在地图应用中,覆盖物通常是指在地图基础图层之上显示的自定义图形元素,如图标、形状或线条等。它们可以用来标注位置、展示路径或者美化地图界面。在百度地图API中,覆盖物功能允许开发者根据需求绘制各种复杂的...

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

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

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

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

    百度地图自定义覆盖物及相关

    首先,"自定义覆盖物"是指在百度地图上添加个性化图层或图标,以满足特定需求。这些覆盖物可以是静态图片、动态动画,甚至是复杂的HTML元素。开发者可以通过调用百度地图JavaScript API来实现这一功能。 在"百度...

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

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

    Android百度地图添加覆盖物

    在Android开发中,集成百度地图并添加覆盖物(也称为POI,Point of Interest)是一项常见的任务,可以为用户提供丰富的地理位置信息和交互功能。本文将详细介绍如何在Android应用中使用百度地图API实现这一功能。 ...

    百度地图自定义覆盖物map.html

    百度地图自定义覆盖物,覆盖物显示信息可完全自己根需求,div+css

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

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

    Map覆盖物添加demo

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

    百度地图3.0.0弹出覆盖物,路线图

    在地图应用中,覆盖物(Overlay)是指在地图上显示的图形元素,如图标、标记、自定义图像等,它们可以用来表示特定位置的信息或者增强地图的视觉效果。在百度地图API中,开发者可以通过创建覆盖物对象并将其添加到...

    Android 百度地图覆盖物.zip

    在这个示例中,`TestMapOverlay`可能包含了一些关键方法,如`draw()`,用于在地图上绘制覆盖物,以及` onTap()`,用于响应用户点击事件。 异步绑定网络图片是一项重要的优化技巧,因为直接在主线程加载网络资源会...

Global site tag (gtag.js) - Google Analytics