怎么在地图上谷歌地图 添加标记记

Android应用中使用百度地图API并添加标注(一) - 推酷
Android应用中使用百度地图API并添加标注(一)
网上一些资料这种的内容已经过时了,这里是最新的内容,如果哪里不对,请吐槽。。。
1)下载百度地图移动版API(Android)开发包
&&&&& 要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件:
下载地址:
2)申请API Key
格式:例如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77:FB;com.majianjie.baidumap
&申请地址:
3)创建一个Android工程 &目录结构如下:
4)在布局文件中添加地图控件
(res/layout/activity_main.xml)
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:orientation=&vertical& &
&com.baidu.mapapi.map.MapView
android:id=&@+id/bmapView&
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:clickable=&true& /&
&/LinearLayout&
5)创建Activity
package com.majianjie.
import android.app.A
import android.graphics.B
import android.graphics.drawable.D
import android.os.B
import android.widget.T
import com.baidu.mapapi.BMapM
import com.baidu.mapapi.MKGeneralL
import com.baidu.mapapi.map.MKE
import com.baidu.mapapi.map.MKMapViewL
import com.baidu.mapapi.map.MapC
import com.baidu.mapapi.map.MapP
import com.baidu.mapapi.map.MapV
import com.baidu.mapapi.map.OverlayI
import com.api.basestruct.GeoP
import com.example.baidumap.R;
public class MainActivity extends Activity {
private Toast mT
private BMapManager mBMapM
public MapView mMapView =
//MapView 是地图主控件
private MapController mMapController =//用MapController完成地图控制
MKMapViewListener mMapListener =
//MKMapViewListener 用于处理地图事件回调
// 显示交通地图
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
* 使用地图sdk前需先初始化BMapManager,这个必须在setContentView()先初始化
mBMapManager = new BMapManager(this);
//第一个参数是API key,
第二个参数是常用事件监听,用来处理通常的网络错误,授权验证错误等,你也可以不添加这个回调接口
mBMapManager.init(&LDtH1sVwr7kygaF0aTqaVwWU&, new MKGeneralListener() {
//授权错误的时候调用的回调函数
public void onGetPermissionState(int iError) {
if (iError ==
MKEvent.ERROR_PERMISSION_DENIED) {
showToast(&API KEY错误, 请检查!&);
//一些网络状态的错误处理回调函数
public void onGetNetworkState(int iError) {
if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
Toast.makeText(getApplication(), &您的网络出错啦!&, Toast.LENGTH_LONG).show();
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapView);
mMapController = mMapView.getController();
// * 获取地图控制器
mMapController.enableClick(true);
设置地图是否响应点击事件
mMapController.setZoom(12);
// * 设置地图缩放级别
mMapView.setBuiltInZoomControls(true);
// * 显示内置缩放控件
mMapView.setSatellite(true);
//设置显示为卫星地图:
//mMapView.setBuiltInZoomControls(true);
在想要添加Overlay的地方使用以下代码,
比如Activity的onCreate()中
//准备要添加的Overlay
double mLat1 = 39.904508;
double mLon1 = 119.99;
// 用给定的经纬度构造GeoPoint,单位是微度 (度 * 1E6)
GeoPoint p1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));
//准备overlay图像数据,根据实情情况修复
Drawable mark= getResources().getDrawable(R.drawable.set);
//用OverlayItem准备Overlay数据
OverlayItem item1 = new OverlayItem(p1,&item1&,&item1&);
//使用setMarker()方法设置overlay图片,如果不设置则使用构建ItemizedOverlay时的默认设置
//创建IteminizedOverlay
CustomItemizedOverlay itemOverlay = new CustomItemizedOverlay(mark, mMapView);
//将IteminizedOverlay添加到MapView中
mMapView.getOverlays().clear();
mMapView.getOverlays().add(itemOverlay);
//现在所有准备工作已准备好,使用以下方法管理overlay.
//添加overlay, 当批量添加Overlay时使用addItem(List&OverlayItem&)效率更高
itemOverlay.addItem(item1);
mMapView.refresh();
mMapController.setCenter(p1);
//设置p地方为中心点
mMapView.regMapViewListener(mBMapManager, new MKMapViewListener() {
// * 地图移动完成时会回调此接口 方法
public void onMapMoveFinish() {
showToast(&地图移动完毕!&);
//* 地图加载完毕回调此接口方法
public void onMapLoadFinish() {
showToast(&地图载入完毕!&);
地图完成带动画的操作(如: animationTo())后,此回调被触发
public void onMapAnimationFinish() {
//当调用过 mMapView.getCurrentMap()后,此回调会被触发
可在此保存截图至存储设备
public void onGetCurrentMap(Bitmap arg0) {
//* 点击地图上被标记的点回调此方法
public void onClickMapPoi(MapPoi arg0) {
if (arg0 != null){
showToast(arg0.strText);
protected void onResume() {
//MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
mMapView.onResume();
super.onResume();
protected void onPause() {
//MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
mMapView.onPause();
super.onPause();
protected void onDestroy() {
//MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
mMapView.destroy();
//退出应用调用BMapManager的destroy()方法
if(mBMapManager != null){
mBMapManager.destroy();
mBMapManager =
super.onDestroy();
//* 显示Toast消息
private void showToast(String msg){
if(mToast == null){
mToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
mToast.setText(msg);
mToast.setDuration(Toast.LENGTH_SHORT);
mToast.show();
6)在AndroidManifest.xml中配置 &添加权限
&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& /&
&uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION& /&
&uses-permission android:name=&android.permission.INTERNET& /&
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /&
&uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& /&
&uses-permission android:name=&android.permission.CHANGE_WIFI_STATE& /&
&uses-permission android:name=&android.permission.READ_PHONE_STATE& /&
7)还有一个文件是自定义的,继承自:
ItemizedOverlay(百度地图中的,不是Android自己的)
Overlay简介
&&&&& Overlay通常被译为“图层”或“覆盖物”。那么对于地图而言,什么称之为覆盖物?“
所有叠加或覆盖到地图之上的内容,都被称之为地图覆盖物
,如标注、矢量图形元素(包括:折线和多边形和圆)、定位图标等。覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动。
&&&&& 为了让大家能够对Overlay有更进一步的认识,我们再通过下面的图形来直观的认识它。&图中标记的那些红色的图标A,B,...,J正是Overlay的其中一种形式。如果你了解PhotoShop中图层的概念,这里应该不难理解。
我们可以这样来理解地图、图层与图层上标记物三者的关系: 下图中的那些红色标记并不属于地图的一部分,这些所有的标记是附着在图层上的,然后将图层蒙在地图之上。
百度地图API提供的几种Overlay
&&&&& 百度地图API提供了以下几种Overlay(覆盖物):&
&&&&& 1)Overlay:它是所有覆盖物的抽象基类,所有的覆盖物均继承此类的方法,实现用户自定义图层显示;
&&&&& 2)MyLocationOverlay:一个负责
显示用户当前位置的Overlay
&&&&& 3)ItemizedOverlay:它包含了一个OverlayItem列表,相当于
一组分条的Overlay
,通过继承此类,将一组兴趣点显示在地图上;
&&&&& 4)PoiOverlay:
本地搜索图层
,提供某一特定地区的位置搜索服务,比如在北京市搜索“公园”,通过此图层将公园显示在地图上;&
&&&&& 5)RouteOverlay:
步行、驾车导航线路图层
,将步行、驾车出行方案的路线及关键点显示在地图上;
&&&&& 6)TransitOverlay:
公交换乘线路图层
,将某一特定地区的公交出行方案的路线及换乘位置显示在地图上。
下面的文件是:CustomItemizedOverlay.java & &
网上有些内容是比较早的,百度地图API已经放弃使用了
,这里是最新的,详细:
package com.majianjie.
import android.graphics.drawable.D
import com.baidu.mapapi.map.ItemizedO
import com.baidu.mapapi.map.MapV
import com.baidu.mapapi.map.OverlayI
import com.api.basestruct.GeoP
public class CustomItemizedOverlay extends ItemizedOverlay&OverlayItem& {
//用MapView构造ItemizedOverlay
public CustomItemizedOverlay(Drawable mark,MapView mapView){
super(mark,mapView);
protected boolean onTap(int index) {
//在此处理item点击事件
System.out.println(&item onTap: &+index);
public boolean onTap(GeoPoint pt, MapView mapView){
//在此处理MapView的点击事件,当返回 true时
super.onTap(pt,mapView);
基本就这些,百度地图API中的内容很丰富,之后会陆续添加,请继续关注!谢谢!如果哪里不对,请吐槽。。。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 百度地图api 添加标记 的文章

 

随机推荐