标注(Marker)是开发人员最常使用的地图覆盖物志一。今天就来向大家介绍一些标注(Marker)的最基本用法!

实现目标:

1、构建基础地图页面;

2、在地图的中心点处加入 Marker;

3、实现 Marker 的点击事件响应;

4、实现 Marker 的加入和灵活删除;

为了实现以上目标。我们会分成下面若干步骤来进行。

第一步、创建project,导入百度地图 Android SDK。

详细创建project的方式(略)。本演示样例主要是为了实现地图及相关的覆盖物功能,因此这里我仅仅使用 SDK 开发资源下载平台所提供的【基础地图】功能模块就可以。

对应下载地址为:http://lbsyun.baidu.com/sdk/download

勾选如图所看到的:

选择完毕后。点击开发包下载,将所下载开发包正确导入开发project。

第二步、申请开发人员秘钥;

project创建完毕后。到 API 控制台。申请对应的开发秘钥。为详细开发工作准备。

详细申请方式及注意事项,请參考:http://blog.csdn.net/callmesen/article/details/39523767  此处不再赘述。

第三步、改动 AndroidManifest 文件。加入开发秘钥和所需权限;

在 AndroidManifest 文件里。加入开发秘钥和所需权限。

加入开发秘钥方式例如以下:

    	<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发秘钥! " />

注意在 application 里面。

加入所需权限例如以下:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

第四步、创建基础地图;

在 xml 文件里加入 mapview 控件,例如以下所看到的:

    <com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />

在 java 代码中初始化地图 SDK,实现基础地图的展示:

//初始化地图 SDK
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//绑定XML中得 mapview 控件
mapView = (MapView) findViewById(R.id.bmapView);

第五步、获取地图中心点。并加入 Marker 对象;

实现的核心代码例如以下:

baiduMap = mapView.getMap();
LatLng latLng = baiduMap.getMapStatus().target;
//准备 marker 的图片
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);
//准备 marker option 加入 marker 使用
markerOptions = new MarkerOptions().icon(bitmap).position(latLng);
//获取加入的 marker 这样便于兴许的操作
marker = (Marker) baiduMap.addOverlay(markerOptions);

第六步、实现 Marker 的点击事件响应;

利用 baidumap 对象的地图监听方法,实现针对 marker 的点击响应,核心代码例如以下:

	//对 marker 加入点击对应事件
baiduMap.setOnMarkerClickListener(new OnMarkerClickListener() { @Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Marker被点击了! ", Toast.LENGTH_SHORT).show();
return false;
}
});

第七步、利用 Button 控件,控制 Marker 的加入删除;

这里用 button 来控制在地图上加入 或者 删除一个 marker,首先在 xml 中加入一个 button 控件:

    <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="删除Marker" />

在 java 代码中加入这个 button 的点击事件响应,核心代码例如以下:

	//按钮控制加入删除 button
button.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub if(button.getText() == "加入Marker")
{
marker = (Marker) baiduMap.addOverlay(markerOptions);
button.setText("删除Marker");
}
else
{
marker.remove();
button.setText("加入Marker");
}
}
});

通过以上的操作。就能够实现对应的 marker 加入,marker 点击响应,marker 删除等操作。

百度地图 Android SDK - 标注(Marker)的基本使用的更多相关文章

  1. 百度地图 Android SDK - 检索功能使用的简单演示样例

    百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...

  2. 百度地图 Android SDK - Hello Baidu Map

    例如,给广大以下主要开发者介绍了如何使用百度地图Android SDK构造的主应用程序的地图! 第一步.创建Androidproject,将百度地图Android SDK的开发包导入到project对 ...

  3. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  4. 百度地图 Android SDK - 新的版本号(v3.2.0)正式上线

    百度地图 Android SDK v3.2.0 在版本号 2014 年 11 月 07 日本正式推出工作完成! watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...

  5. 百度地图 Android SDK - 个性化地图

    什么是百度个性化地图Android SDK? 百度个性化地图Android SDK是一套基于Android 2.2及以上版本号设备的应用程序接口,您能够通过该套接口实现主要的地图功能,而且能够定制地图 ...

  6. 利用百度地图Android sdk高仿微信发送位置功能

    接触了百度地图开发平台半个月了,这2天试着模仿了微信给好友发送位置功能,对百度地图的操作能力又上了一个台阶 (假设须要完整demo.请评论留下邮箱) (眼下源代码已经不发送,假设须要源代码.加qq31 ...

  7. 基础地图Android SDK

    开发者可利用SDK提供的接口,使用百度为您提供的基础地图数据.目前百度地图SDK所提供的地图等级为3-21级,所包含的信息有建筑物.道路.河流.学校.公园等内容. V3.7.0起,地图支持缩放至21级 ...

  8. 百度地图 iOS SDK - 坐标转换方法

    百度地图 Android SDK 要么 iOS SDK 或各种 API 工具产品,我们使用百度自己的加密坐标系. 员在使用过程中,位置点都是通过 GPS 或者其它途径获取的.所以与百度地图所使用的坐标 ...

  9. 【百度地图-安卓SDK】从头开始写android程序

    [百度地图-安卓SDK]从头开始写android程序首先确保有这四个文件    安装jdk先安装android开发SDK(并不只是为eclipse服务的),即运行installer_r15-windo ...

随机推荐

  1. SecureCRT指南

    本文主要介绍SecureCRT的使用方法和技巧. [概念解释]什么是SSH? SSH的英文全称是Secure Shell 传统的网络服务程序,如:FTP和telnet在本质上都是不安全的, 因为它们在 ...

  2. 洛谷T8116 密码

    T8116 密码 题目描述 YJC把核弹发射密码忘掉了……其实是密码被加密了,但是YJC不会解密.密码由n个数字组成,第i个数字被加密成了如下形式:第k小的满足(2^L)|(P-1)且P为质数的P.Y ...

  3. 使用 Python 开始你的机器学习之旅【转】

    转自:https://linux.cn/article-8582-1.html 编译自:https://opensource.com/article/17/5/python-machine-learn ...

  4. oracle 批量改temp/data/redo file的路径

    批量生成修改路径的脚本.select 'alter database rename file ''' || name ||'''' || ' to '''|| substr(name,0,instr( ...

  5. Vue v-for嵌套数据渲染问题

    Vue v-for嵌套数据渲染问题 问题描述: 由于在获取商品子分类的时候,同时需要获取子分类下的商品,那么多层的列表渲染就只能是第一层好用 问题原因: vue在处理多层的渲染的时候,不能直接用等号赋 ...

  6. J.U.C并发框架源码阅读(九)LinkedBlockingQueue

    基于版本jdk1.7.0_80 java.util.concurrent.LinkedBlockingQueue 代码如下 /* * ORACLE PROPRIETARY/CONFIDENTIAL. ...

  7. Spring:特殊数据类型的属性注入(基于配置文件)

    该处提到的特殊数据类型指的是除了基础数据类型和String以外的其他常用的数据类型,如:List.Map.Set.以及pojo对象等.则我们创建的Person类定义为: package bjtu.we ...

  8. CF985B Switches and Lamps【矩阵操作/枚举】

    [链接]CF985B [题意]:给n盏灯,m个开关,每次按开关只能将灯从灯灭的状态转变为灯亮,问是否存在不按所有开关就将所有灯打开的方法. [分析]:有两种办法,一种代码复杂点,容易想到枚举去掉每一行 ...

  9. springboot的配置文件

    一.springboot配置文件值的注入 @ConfigurationProperties(prefix = "xxx") 实例代码: @Component @Configurat ...

  10. TCP/IP,HTTP,SOAP等协议之区别

    术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络.把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到 ...