文档章节

Android百度地图开发实现点击地图添加Marker并获取地址信息

鴿神丶
 鴿神丶
发布于 2015/12/26 15:26
字数 570
阅读 101
收藏 0

概述:

使用前下载最新的库文件,将locSDK6.X.so文件拷贝到jniLibs/armeabi目录下(Android Studio),及locSDK6.X.jar文件拷贝到工程的libs目录下

BaiduMap.OnMapClickListener   地图单击事件监听接口 

GeoCoder   地理编码查询接口 

reverseGeoCode(ReverseGeoCodeOption option)   发起反地理编码请求(经纬度->地址信息)
setOnGetGeoCodeResultListener(OnGetGeoCoderResultListener listener)   设置查询结果监听者

1.首先在布局文件添加mapview

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:top="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_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>

2.MainActivity里添加使用

public class MapActivity extends Activity { 
    private MapView mMapView = null; 
    private BaiduMap mBaiduMap; 
    private BitmapDescriptor bitmap; 
    private String address= ""; 
       
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        // 在使用SDK各组件之前初始化context信息,传入ApplicationContext 
        // 注意该方法要再setContentView方法之前实现 
        SDKInitializer.initialize(getApplicationContext()); 
        setContentView(R.layout.activity_map); 
           
        // 获取地图控件引用 
        mMapView = (MapView) findViewById(R.id.bmapView); 
        mBaiduMap = mMapView.getMap(); 
        //设置是否显示比例尺控件 
        mMapView.showScaleControl(false); 
        //设置是否显示缩放控件 
        mMapView.showZoomControls(false); 
        // 删除百度地图LoGo 
        mMapView.removeViewAt(1); 
           
           
        // 设置marker图标 
        bitmap = BitmapDescriptorFactory.fromResource(R.drawable.maker); 
        mBaiduMap.setOnMapClickListener(new OnMapClickListener() { 
   
            @Override 
            public boolean onMapPoiClick(MapPoi arg0) { 
                // TODO Auto-generated method stub 
                return false; 
            } 
   
            //此方法就是点击地图监听 
            @Override 
            public void onMapClick(LatLng latLng) { 
                //获取经纬度 
                double latitude = latLng.latitude; 
                double longitude = latLng.longitude; 
                System.out.println("latitude=" + latitude + ",longitude=" + longitude); 
                //先清除图层 
                mBaiduMap.clear(); 
                // 定义Maker坐标点 
                LatLng point = new LatLng(latitude, longitude); 
                // 构建MarkerOption,用于在地图上添加Marker 
                MarkerOptions options = new MarkerOptions().position(point) 
                        .icon(bitmap); 
                // 在地图上添加Marker,并显示 
                mBaiduMap.addOverlay(options); 
                //实例化一个地理编码查询对象 
                GeoCoder geoCoder = GeoCoder.newInstance(); 
                //设置反地理编码位置坐标 
                ReverseGeoCodeOption op = new ReverseGeoCodeOption(); 
                op.location(latLng); 
                //发起反地理编码请求(经纬度->地址信息) 
                geoCoder.reverseGeoCode(op); 
                geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() { 
                       
                    @Override 
                    public void onGetReverseGeoCodeResult(ReverseGeoCodeResult arg0) { 
                        //获取点击的坐标地址 
                        address = arg0.getAddress(); 
                        System.out.println("address="+address); 
                    } 
                       
                    @Override 
                    public void onGetGeoCodeResult(GeoCodeResult arg0) { 
                    } 
                }); 
            } 
        }); 
    } 
   
    @Override 
    protected void onDestroy() { 
        super.onDestroy(); 
        // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 
        mMapView.onDestroy(); 
    } 
   
    @Override 
    protected void onResume() { 
        super.onResume(); 
        // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 
        mMapView.onResume(); 
    } 
   
    @Override 
    protected void onPause() { 
        super.onPause(); 
        // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 
        mMapView.onPause(); 
    } 
}


© 著作权归作者所有

鴿神丶
粉丝 3
博文 43
码字总数 6887
作品 0
渝北
私信 提问
Android 百度地图定位(手动+自动)

近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的。我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位...

带梦想一7飞
2013/07/10
1K
1
说说在 Android 如何实现基于位置的服务(基于百度 API)

基于位置的服务简称 LBS(Location Based Service),它是利用无线电通讯网络或 GPS 定位方式来确定出移动设备所在的位置。 利用定位服务,可以开发出许多丰富多彩的功能。比如天气预报 APP,...

deniro
2018/08/04
0
0
Xamarin.Android 使用百度地图获取定位信息

最近做一个项目,web端使用百度地图,PDA使用手持机自带的GPS定位系统获取经纬度,然后再百度地图上显示该经纬度会有一定距离的差异,这里就像可乐的瓶子拧上雪碧的盖子,能拧的上却不美观。...

键盘演绎青春
2018/07/25
0
0
Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不多,本篇文章就带领大家在自己的Android项目中加入百度地图的功能,接下来...

等待流星
2013/12/10
4.5K
1
Android 百度地图开发之MyLocationOverlay,PopupOverlay的使用

这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOverlay和PopupOverlay两个地图覆盖物的使用,Overlay是“图层”或“覆盖物”的意思,MyLocationOverlay从名字上面理解就是我...

等待流星
2013/12/10
2.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

快速排序与冒泡排序

快速排序与冒泡排序 比较基础,特准备写博客记录和思考一下

T型人才追梦者
42分钟前
2
0
OSChina 周三乱弹 —— 调查人员问狗 那你在做什么啊?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Let It Be》- John Denver 《Let It Be》- John Denver 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :每天看一遍,...

小小编辑
今天
7
0
高效程序员的45个习惯总结版-文末脑图

1 做事 一个重大的错误应该被当做一次学习而不是指责他人的机会,团队成员一起工作,应该互相帮助,而不是互相指责 2 欲速则不达 不要为了修复问题而去修复,要投入时间和精力保持代码整洁 ...

阿提说说
今天
18
0
带南海九段线分位数地图可视化(R语言版)

今天带来一篇承诺虾神的可视化博客。内容是使用R语言进行带南海九段线分位数地图可视化。虾神的原博文地址如下(Python版)。 Python实现带南海九段线分位数地图完整可视化版本(附代码及数据...

胖胖雕
今天
12
0
Nginx 的进程结构,你明白吗?

Nginx 进程结构 这篇文章我们来看下 Nginx 的进程结构,Nginx 其实有两种进程结构: 单进程结构 多进程结构 单进程结构实际上不适用于生产环境,只适合我们做开发调试使用。因为在生产环境中...

武培轩
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部