怎么显示百度地图 聚合marker上所有的marker

Android开发
出自百度地图API
此类表示地图上一个图像标注。
构造函数描述
Marker(point:Point[, opts:MarkerOptions])创建一个图像标注实例。point参数指定了图像标注所在的地理位置。
方法返回值描述
openInfoWindow(infoWnd:InfoWindow)
打开信息窗。
closeInfoWindow()
关闭信息窗。
setIcon(icon:Icon)
设置标注所用的图标对象。
返回标注所用的图标对象。
setPoint(point:Point)
设置标注的地理坐标。(自 1.2 废弃)
getPoint()
返回标注的地理坐标。(自 1.2 废弃)
setPosition(position:Point)
设置标注的地理坐标。(自 1.2
getPosition()
返回标注的地理坐标。(自 1.2
setOffset(offset:Size)
设置标注的偏移值。
getOffset()
返回标注的偏移值。
getLabel()
返回标注的文本标注。
setLabel(label:Label)
为标注添加文本标注。
setTitle(title:String)
设置标注的标题,当鼠标移至标注上时显示此标题。
getTitle()
返回标注的标题。
setTop(isTop:Boolean)
将标注置于其他标注之上。默认情况下,纬度较低的标注会覆盖在纬度较高的标注之上,从而形成一种立体效果。通过此方法可使某个标注覆盖在其他所有标注之上。注意:如果在多个标注对象上调用此方法,则这些标注依旧按照纬度产生默认的覆盖效果。
enableDragging()
开启标注拖拽功能。(自 1.1 新增)
disableDragging()
关闭标注拖拽功能。(自 1.1 新增)
enableMassClear()
允许覆盖物在map.clearOverlays方法中被清除。(自 1.1 新增)
disableMassClear()
禁止覆盖物在map.clearOverlays方法中被清除。(自 1.1 新增)
setZIndex(zIndex:Number)
设置覆盖物的zIndex。(自 1.1 新增)
返回覆盖物所在的map对象。(自 1.2 新增)
addContextMenu(menu:ContextMenu)
添加右键菜单。(自 1.2 新增)
removeContextMenu(menu:ContextMenu)
移除右键菜单。(自 1.2 新增)
setAnimation(animation:Animation|Null)
设置标注动画效果。如果参数为null,则取消动画效果。该方法需要在addOverlay方法后设置。(自 1.2 新增)
setRotation(rotation:Number)
设置点的旋转角度。(自 2.0 新增)
getRotation()
获取点的旋转角度。(自 2.0 新增)
setShadow(shadow:Icon)
设置标注阴影图标。(自 1.2 新增)
getShadow()
获取标注阴影图标。(自 1.2 新增)
addEventListener(event:String, handler:Function)
添加事件监听函数
removeEventListener(event:String, handler:Function)
移除事件监听函数
事件参数描述
event{type, target}
点击标注图标后会触发此事件。
event{type, target, point,pixel}
双击标注图标后会触发此事件。
event{type, target, point,pixel}
鼠标在标注图上按下触发此事件。
event{type, target, point,pixel}
鼠标在标注图上释放触发此事件。
event{type, target, point,pixel}
鼠标离开标注时触发此事件。
event{type, target, point,pixel}
当鼠标进入标注图标区域时会触发此事件。
event{type, target}
移除标注时触发。
infowindowclose
event{type, target}
信息窗在此标注上关闭时触发此事件。
infowindowopen
event{type, target}
信息窗在此标注上打开时触发此事件。
event{type, target}
开始拖拽标注时触发此事件。(自 1.1 新增)
event{type, target, pixel, point}
拖拽标注过程中触发此事件。(自 1.1 新增)
event{type, target, pixel, point}
拖拽结束时触发此事件。(自 1.1 新增)
rightclick
event{type, target}
右键点击标注时触发此事件。(自 1.1 新增)
Class:覆盖物类/Marker
Android开发使用百度地图,怎样实现循环显示出所有的点?
用ajax方式返回经纬度
for(var i=0;i&sh.length-1;i++){
sh=fanhui.split(&,&);
var x = sh[0];
var y = sh[1];
ggPoint = new BMap.Point(x, y);
addMarker(ggPoint,sh.length);//调用函数,添加自定义图标
函数addMarker()的声明
function addMarker(point, length){
//坐标转换完之后的回调函数
var mark =
translateCallback = function (point){
for(var j=0;j&length-1;j++){
var myIcon = new BMap.Icon(&../images/&+j+&.png&, new BMap.Size(40,35),{anchor: new BMap.Size(10, 30)});
mark = new BMap.Marker(point,{icon:myIcon});
bm.addOverlay(mark);
bm.setCenter(point);
alert(&../images/&+j+&.png&);
setTimeout(function(){
BMap.Convertor.translate(point,0,translateCallback);
//GCJ-02坐标转成百度坐标
} 一共返回三个点,为什么地图上只显示一个
你可以测试一下这段代码能不能显示多个点?
然后检查一下代码是不是有有小错误,比如返回的坐标、或者最后得到的坐标都是一个。
引用来自“sofire”的答案 你可以测试一下这段代码能不能显示多个点?
然后检查一下代码是不是有有小错误,比如返回的坐标、或者最后得到的坐标都是一个。 用百度默认的marker的话,是可以显示多个点的,但是用了自定义的marker后,就只能显示一个点,我现在怀疑是匿名函数for循环的问题,但是具体还是没找到
--- 共有 3 条评论 ---
alert显示不出对象的值,而且影响流程。而console.log可以随意添加。注意上线前还是得把console.log删除了,否则有些版本的IE会出错。
: 好的,我尝试一下,之前一直用的alert
自定义的Maker应该也可以显示多个。你可以写几个固定的坐标值,测试一下。
可以在程序中加一些调试信息,用console.log(),不要用alert();也可以直接调试js代码,一步一步调试下去,执行逻辑会更清楚些,变量的值也能看出来有没有错误。
引用来自“skywxx”的答案引用来自“sofire”的答案 你可以测试一下这段代码能不能显示多个点?
然后检查一下代码是不是有有小错误,比如返回的坐标、或者最后得到的坐标都是一个。 用百度默认的marker的话,是可以显示多个点的,但是用了自定义的marker后,就只能显示一个点,我现在怀疑是匿名函数for循环的问题,但是具体还是没找到 我用console.log
function addMarker(point, num){
//坐标转换完之后的回调函数,每读取一组经纬度就调用一次addMarker函数
var mark =
translateCallback = function (point){
var pic = &../images/&+num+&.png&;
console.log(pic);
var myIcon = new BMap.Icon(pic, new BMap.Size(40,35),{anchor: new BMap.Size(10, 30)});
var mark = new BMap.Marker(point,{icon:myIcon});
bm.addOverlay(mark);
bm.setCenter(point);
console.log(&调用了&+j+&次&);
setTimeout(function(){
BMap.Convertor.translate(point,0,translateCallback);
//GCJ-02坐标转成百度坐标
console.log(&执行了多少次呢&);
说明addMarker()中setTimeout(function()…………连续执行了三次后,才调用translateCallback,这时地图上显示:
ajax读取多个点的经纬度并返回给网页,用addMarker(point, index)函数可以实现显示多个自定义marker,如下:
function addMarker(point, index){
var myIcon = new BMap.Icon(&http://api./img/markers.png&, new BMap.Size(23, 25), {
offset: new BMap.Size(10, 25),
imageOffset: new BMap.Size(0, 0 - index * 25)
var marker = new BMap.Marker(point, {icon: myIcon});
map.addOverlay(marker);
但是这样显示的点是有误差的,我用下面这两个函数实现经纬度纠偏:
translateCallback = function (point){
setTimeout(function(){
BMap.Convertor.translate(point,0,translateCallback);
//GCJ-02坐标转成百度坐标
我把这三个函数结合起来用为:
function addMarker(point, index){
translateCallback = function (point){
var myIcon = new BMap.Icon(&http://api./img/markers.png&, new BMap.Size(23, 25), {
offset: new BMap.Size(10, 25),
imageOffset: new BMap.Size(0, 0 - index * 25)
var marker = new BMap.Marker(point, {icon: myIcon});
bm.addOverlay(marker);
setTimeout(function(){
BMap.Convertor.translate(point,0,translateCallback);
//GCJ-02坐标转成百度坐标百度地图API中不同marker的InfoWindow的显示内容不同的实现
这几天在写一个开发应用中,用到百度地图。功能要求将一批标记点加入地图,点击其中任意一个点,地图弹出InfoWindow框,里面显示与此点相关的内容。
按照常规写了如下代码:
var node = function(){
addmarks = function(nodes){
&&& var _nodes =
&&& var _markers
= new Array();
&&& for(var
i=0;i&_nodes.i++){
&&& var _marker
= new BMap.Marker(new BMap.Point(_nodes[i].lng,
_nodes[i].lat));
&&& var _node =
_nodes[i];
&&& var _html =
"节点名:"+_node.
_marker.addEventListener("click", function(e){
this.openInfoWindow(Window(_html));
_marker.addEventListener("mouseover",
function(e){&
this.setTitle("坐标@ "+_node.lng+","+_node.lat);
_markers.push(_marker);
& myClusterer = new BMapLib.MarkerClusterer(myMap,
{markers:_markers});
myClusterer.setMaxZoom(17);
//myClusterer.setStyles(myStyles);
上述写法很直观看起来没有问题,但遗憾的是,运行起来后,各个标记点虽然能够根据各自的坐标散布在地图上,但点击每个标记点所弹出的InfoWindow框里的信息则是nodes数组里面最后一个数组的元素的相应信息。
上网查了一下,没有人给出具体解决,只是提出了javascript的闭包来解决。
于是采用闭包方式重新写了代码:
addmarks = function(nodes){
& var _nodes =
& var _markers = new Array();
i=0;i&_nodes.i++){
var _html = "节点名:"+_node.
shop_markers.push(createMark(_nodes[i], _html));
& myClusterer = new BMapLib.MarkerClusterer(myMap,
{markers:shop_markers});
myClusterer.setMaxZoom(17);
//myClusterer.setStyles(myStyles);
createMark = function(node, info_html){
&&& var _marker
= new BMap.Marker(new BMap.Point(node.lng, node.lat));
_marker.addEventListener("click", function(e){
this.openInfoWindow(Window(info_html));
_marker.addEventListener("mouseover",
function(e){&
this.setTitle("位于: "+node.lng+","+node.lat);
&&& return
运行后成功。
关于js的闭包
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。21517人阅读
Android开发(2)
一、基础地图部分
1.获取APPKey
在高德地图注册开发者账号,然后创建应用,使用SHA1和PackageName得到Key
创建应用的链接:/
创建应用 &输入你的应用名称 选择你的应用类型 点击确定
点击确定之后得到这么一个东西点击添加新key &输入完毕后再下方点击提交 & 获取SHA1值以及应用包名见下方
获取SHA1值方法:
首先使用cmd 打开dos窗口
输入cd .android 切换到 .android目录
使用keytool工具获取签名的SHA1值 输入命令:keytool -list -v -keystore debug.keystore 秘钥口令输入 android 或者直接回车
这里的指纹整数有MD5、SHA1、SHA256 这样就拿到了上面需要的SHA1值
获取应用包名:
打开你的gradle文件
这就是你的应用包名
提交之后得到的AppKey:
下载地址:/api/android-sdk/down/
定位SDK下载地址:/api/android-location-sdk/download/
3.导入项目
把下载下来的压缩包解压,里面的jar包放到项目的libs目录下
然后Add As Library
集成高德地图需要用到.so文件 & &解压得到的.so文件 目录里面就是所需的.so文件
在main目录下创建jniLibs目录 注意是main目录 & &将解压得到的.so文件连带目录都copy到jniLibs目录下
4.配置清单文件
在AndroidManifest.xml里面添加你的AppKey
&meta-data
android:name=&com.amap.api.v2.apikey&
android:value=&99ac75ad4aa47d9b865cee7c3ef31a89&/&
在AndroidManifest.xml中添加用户权限
//地图包、搜索包需要的基础权限
&uses-permission android:name=&android.permission.INTERNET& /&
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /&
&uses-permission android:name=&android.permission.ACCESS_NETWORK_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.ACCESS_COARSE_LOCATION& /&
//定位包、导航包需要的额外权限(注:基础权限也需要)
&uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION& /&
&uses-permission android:name=&android.permission.ACCESS_LOCATION_EXTRA_COMMANDS& /&
&uses-permission android:name=&android.permission.CHANGE_WIFI_STATE& /&
&uses-permission android:name=&android.permission.CHANGE_CONFIGURATION&/&
&uses-permission android:name=&android.permission.WRITE_SETTINGS&/&
配置Service
&service android:name=&com.amap.api.location.APSService&/&
5.布局文件:
在布局文件中添加地图控件
&?xml version=&1.0& encoding=&utf-8&?&
&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
tools:context=&.gaodemapdemo.ShowMapActivity&&
&!-- 引入布局文件 --&
&com.amap.api.maps.MapView
xmlns:android=&/apk/res/android&
android:id=&@+id/map&
android:layout_width=&match_parent&
android:layout_height=&match_parent& /&
&/RelativeLayout&
6.正式开始写代码了
1.基础地图显示
初始化地图控件 管理地图控件生命周期
import android.support.v7.app.AppCompatA
import android.os.B
import com.amap.api.maps.MapV
public class ShowMapActivity extends AppCompatActivity {
private MapView mapV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_map);
//初始化地图控件
mapView = (MapView) findViewById(R.id.map);
//必须要写
mapView.onCreate(savedInstanceState);
* 方法必须重写
protected void onResume() {
super.onResume();
mapView.onResume();
* 方法必须重写
protected void onPause() {
super.onPause();
mapView.onPause();
* 方法必须重写
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
* 方法必须重写
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
2.定位功能实现
效果图以及Log
效果图和基础地图的效果图没什么区别,因为我既没有设置中心点也没有设置marker,但是我获取到了位置,那么定位完毕后添加一个中心点,一个marker就可以完成基础地图+定位+marker的效果了
先把定位的所有代码贴出来
import android.app.A
import android.os.B
import android.util.L
import com.amap.api.location.AMapL
import com.amap.api.location.AMapLocationC
import com.amap.api.location.AMapLocationClientO
import com.amap.api.location.AMapLocationL
import com.amap.api.maps.AM
import com.amap.api.maps.MapV
import java.text.SimpleDateF
import java.util.D
public class ShowMapActivity extends Activity {
private MapView mapV
private AMap aM
//声明AMapLocationClient类对象
public AMapLocationClient mLocationClient =
//声明定位回调监听器
public AMapLocationListener mLocationListener = new AMapLocationListener() {
public void onLocationChanged(AMapLocation amapLocation) {
if (amapLocation != null) {
if (amapLocation.getErrorCode() == 0) {
//定位成功回调信息,设置相关消息
amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
amapLocation.getLatitude();//获取纬度
amapLocation.getLongitude();//获取经度
amapLocation.getAccuracy();//获取精度信息
SimpleDateFormat df = new SimpleDateFormat(&yyyy-MM-dd HH:mm:ss&);
Date date = new Date(amapLocation.getTime());
df.format(date);//定位时间
amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
amapLocation.getCountry();//国家信息
amapLocation.getProvince();//省信息
amapLocation.getCity();//城市信息
amapLocation.getDistrict();//城区信息
amapLocation.getStreet();//街道信息
amapLocation.getStreetNum();//街道门牌号信息
amapLocation.getCityCode();//城市编码
amapLocation.getAdCode();//地区编码
amapLocation.getAoiName();//获取当前定位点的AOI信息
lat = amapLocation.getLatitude();
lon = amapLocation.getLongitude();
Log.v(&pcw&,&lat : &+lat+& lon : &+lon);
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e(&AmapError&, &location Error, ErrCode:&
+ amapLocation.getErrorCode() + &, errInfo:&
+ amapLocation.getErrorInfo());
//声明mLocationOption对象
public AMapLocationClientOption mLocationOption =
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_map);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);//必须要写
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听
mLocationClient.setLocationListener(mLocationListener);
* * 初始化AMap对象
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
setUpMap();
private void setUpMap() {
//初始化定位参数
mLocationOption = new AMapLocationClientOption();
//设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
//设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
//设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiActiveScan(true);
//设置是否允许模拟位置,默认为false,不允许模拟位置
mLocationOption.setMockEnable(false);
//设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();
* 方法必须重写
protected void onResume() {
super.onResume();
mapView.onResume();
* 方法必须重写
protected void onPause() {
super.onPause();
mapView.onPause();
protected void onStop() {
super.onStop();
mLocationClient.stopLocation();//停止定位
* 方法必须重写
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
* 方法必须重写
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
mLocationClient.onDestroy();//销毁定位客户端。
这里面有一个地方千万要记住,一定要在AndroidManifest.xml中注册广播 &否则定位会失败
&service android:name=&com.amap.api.location.APSService&/&
下面来讲讲这段代码里面几个组成:
初始化定位
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听
mLocationClient.setLocationListener(mLocationListener);
初始化AMap对象
* * 初始化AMap对象
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
setUpMap();
配置定位参数并开始定位
* 配置定位参数
private void setUpMap() {
//初始化定位参数
mLocationOption = new AMapLocationClientOption();
//设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
//设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
//设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiActiveScan(true);
//设置是否允许模拟位置,默认为false,不允许模拟位置
mLocationOption.setMockEnable(false);
//设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();
在onStop里面停止定位
protected void onStop() {
super.onStop();
mLocationClient.stopLocation();//停止定位
在onDestory方法里面销毁定位
* 方法必须重写
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
mLocationClient.onDestroy();//销毁定位客户端。
设置定位监听,在监听中可以获取定位的一系列数据
* 声明定位回调监听器
public AMapLocationListener mLocationListener = new AMapLocationListener() {
public void onLocationChanged(AMapLocation amapLocation) {
if (amapLocation != null) {
if (amapLocation.getErrorCode() == 0) {
//定位成功回调信息,设置相关消息
amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
amapLocation.getLatitude();//获取纬度
amapLocation.getLongitude();//获取经度
amapLocation.getAccuracy();//获取精度信息
SimpleDateFormat df = new SimpleDateFormat(&yyyy-MM-dd HH:mm:ss&);
Date date = new Date(amapLocation.getTime());
df.format(date);//定位时间
amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
amapLocation.getCountry();//国家信息
amapLocation.getProvince();//省信息
amapLocation.getCity();//城市信息
amapLocation.getDistrict();//城区信息
amapLocation.getStreet();//街道信息
amapLocation.getStreetNum();//街道门牌号信息
amapLocation.getCityCode();//城市编码
amapLocation.getAdCode();//地区编码
amapLocation.getAoiName();//获取当前定位点的AOI信息
lat = amapLocation.getLatitude();
lon = amapLocation.getLongitude();
Log.v(&pcw&,&lat : &+lat+& lon : &+lon);
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e(&AmapError&, &location Error, ErrCode:&
+ amapLocation.getErrorCode() + &, errInfo:&
+ amapLocation.getErrorInfo());
3.设置中心点以及marker
有了效果图 &那么我把基础地图+定位+marker的代码贴出来
import android.app.A
import android.graphics.BitmapF
import android.os.B
import android.util.L
import com.amap.api.location.AMapL
import com.amap.api.location.AMapLocationC
import com.amap.api.location.AMapLocationClientO
import com.amap.api.location.AMapLocationL
import com.amap.api.maps.AM
import com.amap.api.maps.CameraUpdateF
import com.amap.api.maps.MapV
import com.amap.api.maps.model.BitmapD
import com.amap.api.maps.model.BitmapDescriptorF
import com.amap.api.maps.model.LatL
import com.amap.api.maps.model.MarkerO
import java.text.SimpleDateF
import java.util.D
public class ShowMapActivity extends Activity {
private MapView mapV
private AMap aM
//声明AMapLocationClient类对象
public AMapLocationClient mLocationClient =
* 声明定位回调监听器
public AMapLocationListener mLocationListener = new AMapLocationListener() {
public void onLocationChanged(AMapLocation amapLocation) {
if (amapLocation != null) {
if (amapLocation.getErrorCode() == 0) {
//定位成功回调信息,设置相关消息
amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
amapLocation.getLatitude();//获取纬度
amapLocation.getLongitude();//获取经度
amapLocation.getAccuracy();//获取精度信息
SimpleDateFormat df = new SimpleDateFormat(&yyyy-MM-dd HH:mm:ss&);
Date date = new Date(amapLocation.getTime());
df.format(date);//定位时间
amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
amapLocation.getCountry();//国家信息
amapLocation.getProvince();//省信息
amapLocation.getCity();//城市信息
amapLocation.getDistrict();//城区信息
amapLocation.getStreet();//街道信息
amapLocation.getStreetNum();//街道门牌号信息
amapLocation.getCityCode();//城市编码
amapLocation.getAdCode();//地区编码
amapLocation.getAoiName();//获取当前定位点的AOI信息
lat = amapLocation.getLatitude();
lon = amapLocation.getLongitude();
Log.v(&pcw&, &lat : & + lat + & lon : & + lon);
Log.v(&pcw&, &Country : & + amapLocation.getCountry() + & province : & + amapLocation.getProvince() + & City : & + amapLocation.getCity() + & District : & + amapLocation.getDistrict());
// 设置当前地图显示为当前位置
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lon), 19));
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(new LatLng(lat, lon));
markerOptions.title(&当前位置&);
markerOptions.visible(true);
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.location_marker));
markerOptions.icon(bitmapDescriptor);
aMap.addMarker(markerOptions);
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e(&AmapError&, &location Error, ErrCode:&
+ amapLocation.getErrorCode() + &, errInfo:&
+ amapLocation.getErrorInfo());
//声明mLocationOption对象
public AMapLocationClientOption mLocationOption =
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_map);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);//必须要写
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听
mLocationClient.setLocationListener(mLocationListener);
* * 初始化AMap对象
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
setUpMap();
* 配置定位参数
private void setUpMap() {
//初始化定位参数
mLocationOption = new AMapLocationClientOption();
//设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
//设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
//设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiActiveScan(true);
//设置是否允许模拟位置,默认为false,不允许模拟位置
mLocationOption.setMockEnable(false);
//设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();
* 方法必须重写
protected void onResume() {
super.onResume();
mapView.onResume();
* 方法必须重写
protected void onPause() {
super.onPause();
mapView.onPause();
protected void onStop() {
super.onStop();
mLocationClient.stopLocation();//停止定位
* 方法必须重写
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
* 方法必须重写
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
mLocationClient.onDestroy();//销毁定位客户端。
代码实际上没什么难度,也不多,下面我把设置marker的代码贴出来
// 设置当前地图显示为当前位置
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lon), 19));
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(new LatLng(lat, lon));
markerOptions.title(&当前位置&);
markerOptions.visible(true);
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.location_marker));
markerOptions.icon(bitmapDescriptor);
aMap.addMarker(markerOptions);
好了,到这里 基础地图+定位+marker就做出来了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:31797次
排名:千里之外
评论:13条

我要回帖

更多关于 百度地图 marker 的文章

 

随机推荐