PoiOverlay 的java按钮点击事件处理怎么处理

com.mapbar.android.maps
Class Overlay
java.lang.Object
com.mapbar.android.maps.Overlay
Direct Known Subclasses: ,
public abstract class Overlayextends java.lang.Object
Overlay是一个基类,它表示可以显示在地图上方的覆盖overlay。添加一个overlay时,从这个基类派生出一个子类,创建一个实例,然后把它加入到一个列表中。这个列表通过调用 得到。
为了允许用户触摸去对齐一个点,子类应当实现
static&interface
&&&&&&&&&&
Overlay的接口定义。其中overlay的各项可被对齐(例如,当用户触发一个缩放时,这个接口被调用允许用户把缩放对齐到一个兴趣点。
protected static&float
&&&&&&&&&&
在透视图里创建标记点阴影的X偏移量。
protected static&float
&&&&&&&&&&
在透视图里创建标记点阴影的Y刻度值。
&&&&&&&&&&&
(android.graphics.Canvas&canvas,
boolean&shadow)
&&&&&&&&&&
在地图上绘制一个Overlay。
(android.graphics.Canvas&canvas,
boolean&shadow,
long&when)
&&&&&&&&&&
针对于动画overlay的绘制调用。
protected static&void
(android.graphics.Canvas&canvas,
android.graphics.drawable.Drawable&drawable,
boolean&shadow)
&&&&&&&&&&
在一个偏移量地方绘制一个Drawable的方便方法。
(int&keyCode,
android.view.KeyEvent&event,
&&&&&&&&&&
处理一个按下按键事件。
(int&keyCode,
android.view.KeyEvent&event,
&&&&&&&&&&
处理一个按键放开事件。
&&&&&&&&&&
处理一个&点击&事件。
(android.view.MotionEvent&e,
&&&&&&&&&&
处理一个触摸事件。
(android.view.MotionEvent&event,
&&&&&&&&&&
处理一个跟踪球(trackball)事件。
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
SHADOW_X_SKEW
protected static final float SHADOW_X_SKEW
在透视图里创建一个标记阴影的X偏移量。
SHADOW_Y_SCALE
protected static final float SHADOW_Y_SCALE
在透视图中创建一个标记阴影的Y刻度值。
public Overlay()
protected static void drawAt(android.graphics.Canvas&canvas,
android.graphics.drawable.Drawable&drawable,
boolean&shadow)
在某个偏移位置画一个Drawable的便捷方法。x和y是像素坐标。你可以调用把经纬度变换成准确的屏幕坐标,其中 是从 传递过来的。
Parameters:shadow -
如果为true, 只绘制drawable的阴影。否则,绘制drawable自身。
onTouchEvent
public boolean onTouchEvent(android.view.MotionEvent&e,
处理一个触摸事件。默认情况下没有任何行为返回false。
Parameters:
动作事件。
产生触摸事件的MapView
Returns: 如果overlay处理了点击事件,返回true。
onTrackballEvent
public boolean onTrackballEvent(android.view.MotionEvent&event,
处理一个跟踪球(trackball)事件。默认不做处理且返回false。
Parameters:event -
动作事件。
产生trackball事件的MapView。Returns: 如果点击事件被这个overlay处理,返回true。
public boolean onKeyDown(int&keyCode,
android.view.KeyEvent&event,
处理一个按键被按下的事件。默认情况下,不做任何动作,且返回false。
Parameters:keyCode -
按键代码。
按键事件。
产生按键事件的MapView
Returns: 如果overlay处理这个点击事件,返回true。
public boolean onKeyUp(int&keyCode,
android.view.KeyEvent&event,
处理一个按键放开事件。默认不做任何动作且返回false。
Parameters:
keyCode - 键值
event - 按键事件mapView -
产生按键事件的MapView
Returns: 如果overlay处理了这个点击事件,返回true。
public boolean onTap(&p,
处理一个&点击&事件。这个事件或是一个在地图任何地方的触屏点击,或是在地图中心的跟踪球点击。默认不做任何动作,且返回false。
Parameters:p -
被点击的位置点。
产生点击事件的MapView
Returns: 如果Overlay处理了这个点击事件,返回true。
public void draw(android.graphics.Canvas&canvas,
boolean&shadow)
在地图上绘制overlay。这个方法首先被shadow=true,活动的overlay调用去放置阴影层,然后被那些shadow=false的overlay调用。默认不绘制任何东西。
Parameters:canvas -
待绘制的画布。注意,这个绘制或许已经被做了某种变换,所以维持其其原样。
mapView - 请求绘制的MapView.使用 在屏幕像素坐标和经纬度坐标直接变换。shadow -
如果为true,则绘制阴影层。否则,绘制overlay的内容。
public boolean draw(android.graphics.Canvas&canvas,
boolean&shadow,
long&when)
专门绘制动画overlay的调用。默认情况下,通过
调用,且返回false。
Parameters:canvas - 带绘制的画布。注意画布可能已经被做了某种变换,所以维持其原样。mapView - 请求绘制的MapView. 使用在屏幕坐标和经纬度坐标之间做变换。shadow - 如果为true, 绘制阴影层。否则,绘制overlay的内容。when - 绘制的时间戳。
Returns:True if you need to be dr false
otherwise. Default implementation returns false.PoiOverlay
com.mapabc.mapapi
类 PoiOverlay
java.lang.Object
com.mapabc.mapapi.PoiOverlay
所有已实现的接口:
public class PoiOverlayextends &&
该类继承自ItemizedOverlay,提供了在地图上标识搜索结果的方法,在效果上定义了一个POI图层。当用户点击PoiOverlay在地图上显示的“气泡”时,将弹出一个信息窗口,显示此POI的详情。在地图上,每个PoiOverlay只会显示一个信息窗口,即当气泡点击发生时,会自动关闭已有信息窗口,再打开新的窗口。
用于接收item焦点变化的监听器。
Overlay的接口定义,这个overlay包含的项目可被对齐(例如,当用户触发一个缩放时,这函数可被调用允许用户把缩放框和一个兴趣点对齐)。
(Drawable&pic,
java.util.List&&&items)
&&&&&&&&根据给定的参数来构造一个PoiOverlay的新对象。&&&
(Drawable&pic,
java.util.List&&&items,
java.lang.String&catagory)
&&&&&&&&根据给定的参数来构造一个PoiOverlay的新对象。&&&
&&&将PoiOverlay加入到地图中。&&&&&&&&
&&&如果有已经打开的信息窗口,则关闭。&&&&&&&&
protected &
&&&子类创建实体item的方法。&&&&&&&
(boolean&enable)
&&&打开/关闭信息窗口功能。&&&&&&&&
protected &
&&&返回信息窗口的显示位置。&&&&&&&&
protected &
(int&index)
&&&根据给定的索引返回信息窗口的显示位置。&&&&&&&&
protected &Drawable
&&&返回信息窗口的背景图片。&&&&&&&&
protected &Drawable
&&&返回信息窗口显示的POI的图片。&&&&&&&&
protected &View
&&&返回信息窗口的显示内容。&&&&&&&&
protected &boolean
(int&index)
&&&覆盖这个方法去处理一个item上的一个“点击”。&&&&&&&&
&&&将PoiOverlay从地图中移除。&&&&&&&&
(int&index)
&&&打开Overlay的信息窗口。&&&&&&&&
&&&这个overlay中的item总数。
, , , , , , , , , , , , , , , , , , , , ,
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
PoiOverlay
public PoiOverlay(Drawable&pic,
java.util.List&&&items)
根据给定的参数来构造一个PoiOverlay的新对象。
pic - 此Overlay的图标
items- POI列表
PoiOverlay
public PoiOverlay(Drawable&pic,
java.util.List&&&items,
java.lang.String&catagory)
根据给定的参数来构造一个PoiOverlay的新对象。
pic - 此Overlay的图标,如果pic为空,则使用缺省图标。
items- POI列表,在items中的POI,如果属于该类型组合,则加入标注,否则摒弃。
catagory- 类型组合
closePopupWindow
public void closePopupWindow()
如果有已经打开的信息窗口,则关闭。
createItem
createItem(int&i)
复制的描述
子类创建实体item的方法。
类 && 中的
i - POI的索引。
创建的实体item。
public int size()
复制的描述
这个overlay中的item总数。
类 && 中的 。
overlay中的item总数
public void addToMap(&mv)
将PoiOverlay加入到地图中。
mv - 已加入此Overlay的MapView。
removeFromMap
public boolean removeFromMap()
将PoiOverlay从地图中移除。
一个布尔值,表示移除是否成功,true表示成功,false表示失败。
getPopupMarker
protected Drawable getPopupMarker(&item)
返回信息窗口显示的该POI的图片。
若参数缺省实现上将先选取该POI的marker
(OverlayItem.getMarker),如果该POI没有设置marker,则取参数PoiItem的缺省图标。
信息窗口显示的该POI的图片。
enablePopup
public void enablePopup(boolean&enable)
打开/关闭信息窗口功能。
enable - 一个布尔值,表示打开还是关闭信息窗口功能,
true表示打开信息窗口功能(缺省为打开),false表示关闭信息窗口功能,此时再点击气泡,不会弹出信息窗口。
showPopupWindow
public boolean showPopupWindow(int&index)
打开Overlay的信息窗口。
如果信息窗口为enable状态,将打开信息窗口并返回true;否则,不做任何事情,同时,返回false。
index- 需要打开的PoiItem的索引
一个布尔值,表示打开是否成功,true表示成功,false表示失败。
protected boolean onTap(int&index)
覆盖这个方法去处理一个item上的一个“点击”。
index - POI的索引。
类 && 中的
getPopupBackground
protected Drawable getPopupBackground()
返回信息窗口的背景图片。
一般为9-patch-png格式。如果未重载此方法或返回值为空,则使用缺省的背景。
信息窗口的背景图片。
getLayoutParam
getLayoutParam(int&index)
返回信息窗口的显示位置。
如果未重载此方法或返回值为空,则使用缺省的显示位置。如果定制了信息窗口的背景图片,则一般需重载此函数。
index- 需要打开的PoiItem的索引
信息窗口的显示位置。
getLayoutParam
getLayoutParam()
返回信息窗口的显示位置。
如果未重载此方法或返回值为空,则使用缺省的显示位置。如果定制了信息窗口的背景图片,则一般需重载此方法。
信息窗口的显示位置。
getPopupView
protected View getPopupView(&item)
返回信息窗口的显示内容。可重载此接口,以定制PoiItem的显示内容。参数为此时被激活(点击)的PoiItem。
item- 此时被激活(点击)的PoiItem。
信息窗口的显示内容。&百度地图开发第四集android_baidu_PoiOverlay
秒后自动跳转到登录页
(奖励10下载豆)
快捷登录:
举报类型:
不规范:上传重复资源
不规范:标题与实际内容不符
不规范:资源无法下载或使用
其他不规范行为
违规:资源涉及侵权
违规:含有危害国家安全等内容
违规:含有反动/色情等内容
违规:广告内容
详细原因:
任何违反下载中心规定的资源,欢迎Down友监督举报,第一举报人可获5-10下载豆奖励。
Android开发入门与实
4天教会您用Android
Android应用开发入门
2015超级火爆的测试
最火的Android开源项
Android 仿微信语音
2015最火的Android开
百度地图开发第四集android_baidu_PoiOverlay
上传时间:
技术分类:
资源评价:
(0位用户参与评价)
已被下载&1&次
百度地图开发第四集android_baidu_PoiOverlay
(12位用户参与评价)
down友评价
51CTO下载中心常见问题:
1.如何获得下载豆?
1)上传资料
2)评论资料
3)每天在首页签到领取
4)购买VIP会员服务,无需下载豆下载资源
5)更多途径:点击此处
2.如何删除自己的资料?
下载资料意味着您已同意遵守以下协议:
1.资料的所有权益归上传用户所有
2.未经权益所有人同意,不得将资料中的内容挪作商业或盈利用途
3.51CTO下载中心仅提供资料交流平台,并不对任何资料负责
4.本站资料中如有侵权或不适当内容,请邮件与我们联系()
5.本站不保证资源的准确性、安全性和完整性, 同时也不承担用户因使用这些资料对自己和他人造成任何形式的伤害或损失
下载1206次
相关专题推荐
Google正式在Android官网发布Android
本套视频教程专为希望成为Android开发
本专题为大家收录了当下热门的Androi
本专题收集了android开发的一系列小工
Android目前已经占据了全球智能手机操
本套视频是传智播客3G-Android就业班
本专题精选了Android开发相关的电子书
本专题视频共有67集,是传智播客3G-A
安卓移动平台自2007年11月开放源码以
本课程使用Android 2.3.3平台进行开发
此视频实战内容由浅入深,从游戏开发
新浪微博Android客户端开发视频教程是
本视频由黑马程序员的张泽华老师录制
一大波Android源码来袭。本专题为And
本专题为张泽华老师教授的Android开发
OpenGL ES (OpenGL for Embedded Sys
本周下载热点当前访客身份:游客 [
这个人很懒,啥也没写
:楼主你好,通过一键清理,测试过,不会执行OnTri...
:很久不这么用了
:源码发粗来吧
:请问,xml文件中的com.baidu.mapapi.map.MapVie...
今日访问:2
昨日访问:77
本周访问:79
本月访问:1655
所有访问:20765
Android 百度地图开发之MyLocationOverlay,PopupOverlay的使用
发表于2年前( 20:05)&&
阅读(1399)&|&评论()
0人收藏此文章,
这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOverlay和PopupOverlay两个地图覆盖物的使用,Overlay是“图层”或“覆盖物”的意思,MyLocationOverlay从名字上面理解就是我的位置图层,他能够实现在地图上显示当前位置的图标以及指南针,MyLocationOverlay只负责显示我的位置,位置数据请使用百度定位SDK获取,将获取的位置数据放在一个LocationData结构中并用该结构设置MyLcationOverlay的数据源,即可创建MyLocationOverlay,PopupOverlay就是弹出窗口图层了,跟PopupWindow类似的东西,下面会介绍他们的使用方法
定位我们使用的是百度&Android 定位SDKv4.0,我们先了解下定位原理和定位精度
使用百度Android定位SDK必须注册GPS和网络使用权限。定位SDK采用GPS、基站、Wi-Fi信号进行定位。当应用程序向定位SDK发起定位请求时,定位SDK会根据应用的定位因素(GPS、基站、Wi-Fi信号)的实际情况(如是否开启GPS、是否连接网络、是否有信号等)来生成相应定位依据进行定位。 用户可以设置满足自身需求的定位依据: 若用户设置GPS优先,则优先使用GPS进行定位,如果GPS定位未打开或者没有可用位置信息,且网络连接正常,定位SDK则会返回网络定位(即Wi-Fi与基站)的最优结果。为了使获得的网络定位结果更加精确,请打开手机的Wi-Fi开关。
了解了百度定位的原理和定位精度之后,接下来我们就来使用百度定位SDKv4.0吧
一 . 导入库文件
在使用百度定位SDKv4.0之前,我们要下载最新的库文件,下载地址:,将liblocSDK4.so文件拷贝到libs/armeabi目录下。将locSDK4.0.jar文件拷贝到工程的libs目录下
二 . 布局文件,一个百度地图控件,加一个手动点击实现定位的按钮,放在一个相对布局里面,很简单的布局
&?xml&version="1.0"&encoding="utf-8"?&&&
&RelativeLayout&xmlns:android="/apk/res/android"&&
&&&&android:layout_width="fill_parent"&&
&&&&android:layout_height="fill_parent"&&&&
&&&&&com.baidu.mapapi.map.MapView&&
&&&&&&&&android:id="@+id/bmapView"&&
&&&&&&&&android:layout_width="fill_parent"&&
&&&&&&&&android:layout_height="fill_parent"&&
&&&&&&&&android:clickable="true"&/&&&
&&&&&&Button&&
&&&&&&&&&android:id="@+id/request"&&
&&&&&&&&&android:layout_width="wrap_content"&&
&&&&&&&&&android:layout_height="wrap_content"&&
&&&&&&&&&android:layout_alignParentRight="true"&&
&&&&&&&&&android:layout_alignParentTop="true"&&
&&&&&&&&&android:layout_marginRight="10dp"&&
&&&&&&&&&android:layout_marginTop="10dip"&&
&&&&&&&&&android:background="@drawable/custom_loc"&&/&&&
&/RelativeLayout&&&
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" &
&com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" /&
android:id="@+id/request"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="10dp"
android:layout_marginTop="10dip"
android:background="@drawable/custom_loc"
&/RelativeLayout&
三 . 界面MainActivity代码,先贴上,然后适当讲解相关代码,我注释也比较清楚
package&com.example.&&
import&android.app.A&&
import&android.graphics.B&&
import&android.os.B&&
import&android.util.L&&
import&android.view.LayoutI&&
import&android.view.V&&
import&android.view.View.MeasureS&&
import&android.view.View.OnClickL&&
import&android.widget.B&&
import&android.widget.TextV&&
import&android.widget.T&&
import&com.baidu.location.BDL&&
import&com.baidu.location.BDLocationL&&
import&com.baidu.location.LocationC&&
import&com.baidu.location.LocationClientO&&
import&com.baidu.mapapi.BMapM&&
import&com.baidu.mapapi.MKGeneralL&&
import&com.baidu.mapapi.map.LocationD&&
import&com.baidu.mapapi.map.MKE&&
import&com.baidu.mapapi.map.MapC&&
import&com.baidu.mapapi.map.MapV&&
import&com.baidu.mapapi.map.MyLocationO&&
import&com.baidu.mapapi.map.PopupClickL&&
import&com.baidu.mapapi.map.PopupO&&
import&com.api.basestruct.GeoP&&
public&class&MainActivity&extends&Activity&{&&
&&&&private&Toast&mT&&
&&&&private&BMapManager&mBMapM&&
&&&&private&MapView&mMapView&=&null;&&
&&&&private&MapController&mMapController&=&null;&&
&&&&&*&定位SDK的核心类&
&&&&private&LocationClient&mLocC&&
&&&&&*&用户位置信息&&
&&&&private&LocationData&mLocD&&
&&&&&*&我的位置图层&
&&&&private&LocationOverlay&myLocationOverlay&=&null;&&
&&&&&*&弹出窗口图层&
&&&&private&PopupOverlay&mPopupOverlay&&=&null;&&
&&&&private&boolean&isRequest&=&false;//是否手动触发请求定位 &&
&&&&private&boolean&isFirstLoc&=&true;//是否首次定位 &&
&&&&&*&弹出窗口图层的View&
&&&&private&View&mPopupV&&
&&&&private&BDLocation&&&
&&&&@Override&&
&&&&protected&void&onCreate(Bundle&savedInstanceState)&{&&
&&&&&&&&super.onCreate(savedInstanceState);&&
&&&&&&&&//使用地图sdk前需先初始化BMapManager,这个必须在setContentView()先初始化 &&
&&&&&&&&mBMapManager&=&new&BMapManager(this);&&
&&&&&&&&&&
&&&&&&&&//第一个参数是API&key, &&
&&&&&&&&//第二个参数是常用事件监听,用来处理通常的网络错误,授权验证错误等,你也可以不添加这个回调接口 &&
&&&&&&&&mBMapManager.init("7aea513eaa7a17b9413b4b",&new&MKGeneralListenerImpl());&&
&&&&&&&&setContentView(R.layout.activity_main);&&
&&&&&&&&&&
&&&&&&&&//点击按钮手动请求定位 &&
&&&&&&&&((Button)&findViewById(R.id.request)).setOnClickListener(new&OnClickListener()&{&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&public&void&onClick(View&v)&{&&
&&&&&&&&&&&&&&&&requestLocation();&&
&&&&&&&&&&&&}&&
&&&&&&&&});&&
&&&&&&&&&&
&&&&&&&&mMapView&=&(MapView)&findViewById(R.id.bmapView);&//获取百度地图控件实例 &&
&&&&&&&&mMapController&=&mMapView.getController();&//获取地图控制器 &&
&&&&&&&&mMapController.enableClick(true);&&&//设置地图是否响应点击事件 &&
&&&&&&&&mMapController.setZoom(14);&&&//设置地图缩放级别 &&
&&&&&&&&mMapView.setBuiltInZoomControls(true);&&&//显示内置缩放控件 &&
&&&&&&&&&&
&&&&&&&&mMapView.setTraffic(true);&&//设置交通信息图 &&
//&&&&&&&&mMapView.setSatellite(true);&&//设置卫星图 &&
//&&&&&&&&mMapController.setOverlooking(-45);&&//设置地图俯视角度&,范围:0~&-45 &&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&mPopupView&=&LayoutInflater.from(this).inflate(R.layout.pop_layout,&null);&&
&&&&&&&&&&
&&&&&&&&//实例化弹出窗口图层 &&
&&&&&&&&mPopupOverlay&=&new&PopupOverlay(mMapView&,new&PopupClickListener()&{&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&/**&
&&&&&&&&&&&&&*&点击弹出窗口图层回调的方法&
&&&&&&&&&&&&&*/&&
&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&public&void&onClickedPopup(int&arg0)&{&&
&&&&&&&&&&&&&&&&//隐藏弹出窗口图层 &&
&&&&&&&&&&&&&&&&mPopupOverlay.hidePop();&&
&&&&&&&&&&&&}&&
&&&&&&&&});&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&//实例化定位服务,LocationClient类必须在主线程中声明 &&
&&&&&&&&mLocClient&=&new&LocationClient(getApplicationContext());&&
&&&&&&&&mLocClient.registerLocationListener(new&BDLocationListenerImpl());//注册定位监听接口 &&
&&&&&&&&&&
&&&&&&&&/**&
&&&&&&&&&*&LocationClientOption&该类用来设置定位SDK的定位方式。&
&&&&&&&&&*/&&
&&&&&&&&LocationClientOption&option&=&new&LocationClientOption();&&
&&&&&&&&option.setOpenGps(true);&//打开GPRS &&
&&&&&&&&option.setAddrType("all");//返回的定位结果包含地址信息 &&
&&&&&&&&option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02 &&
&&&&&&&&option.setPriority(LocationClientOption.GpsFirst);&//&设置GPS优先 &&
&&&&&&&&option.setScanSpan(5000);&//设置发起定位请求的间隔时间为5000ms &&
&&&&&&&&option.disableCache(false);//禁止启用缓存定位 &&
//&&&&&&option.setPoiNumber(5);&&&&//最多返回POI个数&&& &&
//&&&&&&option.setPoiDistance(1000);&//poi查询距离&&&&&&&& &&
//&&&&&&option.setPoiExtraInfo(true);&&//是否需要POI的电话和地址等详细信息&&&&&&&& &&
&&&&&&&&mLocClient.setLocOption(option);&&//设置定位参数 &&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&mLocClient.start();&&//&调用此方法开始定位 &&
&&&&&&&&&&
&&&&&&&&//定位图层初始化 &&
&&&&&&&&myLocationOverlay&=&new&LocationOverlay(mMapView);&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&//实例化定位数据,并设置在我的位置图层 &&
&&&&&&&&mLocData&=&new&LocationData();&&
&&&&&&&&myLocationOverlay.setData(mLocData);&&
&&&&&&&&&&
&&&&&&&&//添加定位图层 &&
&&&&&&&&mMapView.getOverlays().add(myLocationOverlay);&&
&&&&&&&&&&
&&&&&&&&//修改定位数据后刷新图层生效 &&
&&&&&&&&mMapView.refresh();&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&*&定位接口,需要实现两个方法&
&&&&&*&@author&xiaanming&
&&&&public&class&BDLocationListenerImpl&implements&BDLocationListener&{&&
&&&&&&&&/**&
&&&&&&&&&*&接收异步返回的定位结果,参数是BDLocation类型参数&
&&&&&&&&&*/&&
&&&&&&&&@Override&&
&&&&&&&&public&void&onReceiveLocation(BDLocation&location)&{&&
&&&&&&&&&&&&if&(location&==&null)&{&&
&&&&&&&&&&&&&&&&return;&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&StringBuffer&sb&=&new&StringBuffer(256);&&
&&&&&&&&&&&&&&sb.append("time&:&");&&
&&&&&&&&&&&&&&sb.append(location.getTime());&&
&&&&&&&&&&&&&&sb.append("\nerror&code&:&");&&
&&&&&&&&&&&&&&sb.append(location.getLocType());&&
&&&&&&&&&&&&&&sb.append("\nlatitude&:&");&&
&&&&&&&&&&&&&&sb.append(location.getLatitude());&&
&&&&&&&&&&&&&&sb.append("\nlontitude&:&");&&
&&&&&&&&&&&&&&sb.append(location.getLongitude());&&
&&&&&&&&&&&&&&sb.append("\nradius&:&");&&
&&&&&&&&&&&&&&sb.append(location.getRadius());&&
&&&&&&&&&&&&&&if&(location.getLocType()&==&BDLocation.TypeGpsLocation){&&
&&&&&&&&&&&&&&&&&&&sb.append("\nspeed&:&");&&
&&&&&&&&&&&&&&&&&&&sb.append(location.getSpeed());&&
&&&&&&&&&&&&&&&&&&&sb.append("\nsatellite&:&");&&
&&&&&&&&&&&&&&&&&&&sb.append(location.getSatelliteNumber());&&
&&&&&&&&&&&&&&&&&&&}&else&if&(location.getLocType()&==&BDLocation.TypeNetWorkLocation){&&
&&&&&&&&&&&&&&&&&&&sb.append("\naddr&:&");&&
&&&&&&&&&&&&&&&&&&&sb.append(location.getAddrStr());&&
&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&Log.e("log",&sb.toString());&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&MainActivity.this.location&=&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&mLocData.latitude&=&location.getLatitude();&&
&&&&&&&&&&&&mLocData.longitude&=&location.getLongitude();&&
&&&&&&&&&&&&//如果不显示定位精度圈,将accuracy赋值为0即可 &&
&&&&&&&&&&&&mLocData.accuracy&=&location.getRadius();&&
&&&&&&&&&&&&mLocData.direction&=&location.getDerect();&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&//将定位数据设置到定位图层里 &&
&&&&&&&&&&&&myLocationOverlay.setData(mLocData);&&
&&&&&&&&&&&&//更新图层数据执行刷新后生效 &&
&&&&&&&&&&&&mMapView.refresh();&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&if(isFirstLoc&||&isRequest){&&
&&&&&&&&&&&&&&&&//将给定的位置点以动画形式移动至地图中心 &&
&&&&&&&&&&&&&&&&mMapController.animateTo(new&GeoPoint(&&
&&&&&&&&&&&&&&&&&&&&&&&&(int)&(location.getLatitude()&*&1e6),&(int)&(location&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.getLongitude()&*&1e6)));&&
&&&&&&&&&&&&&&&&showPopupOverlay(location);&&
&&&&&&&&&&&&&&&&isRequest&=&false;&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&isFirstLoc&=&false;&&
&&&&&&&&&&&&&&
&&&&&&&&}&&
&&&&&&&&/**&
&&&&&&&&&*&接收异步返回的POI查询结果,参数是BDLocation类型参数&
&&&&&&&&&*/&&
&&&&&&&&@Override&&
&&&&&&&&public&void&onReceivePoi(BDLocation&poiLocation)&{&&
&&&&&&&&&&&&&&
&&&&&&&&}&&
&&&&//继承MyLocationOverlay重写dispatchTap方法 &&
&&&&private&class&LocationOverlay&extends&MyLocationOverlay{&&
&&&&&&&&public&LocationOverlay(MapView&arg0)&{&&
&&&&&&&&&&&&super(arg0);&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&/**&
&&&&&&&&&*&在“我的位置”坐标上处理点击事件。&
&&&&&&&&&*/&&
&&&&&&&&@Override&&
&&&&&&&&protected&boolean&dispatchTap()&{&&
&&&&&&&&&&&&//点击我的位置显示PopupOverlay &&
&&&&&&&&&&&&showPopupOverlay(location);&&
&&&&&&&&&&&&return&super.dispatchTap();&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&*&显示弹出窗口图层PopupOverlay&
&&&&&*&@param&location&
&&&&private&void&showPopupOverlay(BDLocation&location){&&
&&&&&&&&&TextView&popText&=&((TextView)mPopupView.findViewById(R.id.location_tips));&&
&&&&&&&&&popText.setText("[我的位置]\n"&+&location.getAddrStr());&&
&&&&&&&&&mPopupOverlay.showPopup(getBitmapFromView(popText),&&
&&&&&&&&&&&&&&&&&&&&new&GeoPoint((int)(location.getLatitude()*1e6),&(int)(location.getLongitude()*1e6)),&&
&&&&&&&&&&&&&&&&&&&&15);&&
&&&&&&&&&&&
&&&&&*&手动请求定位的方法&
&&&&public&void&requestLocation()&{&&
&&&&&&&&isRequest&=&true;&&
&&&&&&&&&&
&&&&&&&&if(mLocClient&!=&null&&&&mLocClient.isStarted()){&&
&&&&&&&&&&&&showToast("正在定位......");&&
&&&&&&&&&&&&mLocClient.requestLocation();&&
&&&&&&&&}else{&&
&&&&&&&&&&&&Log.d("log",&"locClient&is&null&or&not&started");&&
&&&&&&&&}&&
&&&&&/**&&
&&&&&*&显示Toast消息&&
&&&&&*&@param&msg&&
&&&&&*/&&&&
&&&&private&void&showToast(String&msg){&&&&
&&&&&&&&if(mToast&==&null){&&&&
&&&&&&&&&&&&mToast&=&Toast.makeText(this,&msg,&Toast.LENGTH_SHORT);&&&&
&&&&&&&&}else{&&&&
&&&&&&&&&&&&mToast.setText(msg);&&&&
&&&&&&&&&&&&mToast.setDuration(Toast.LENGTH_SHORT);&&
&&&&&&&&}&&&&
&&&&&&&&mToast.show();&&&&
&&&&&*&将View转换成Bitmap的方法&
&&&&&*&@param&view&
&&&&public&static&Bitmap&getBitmapFromView(View&view)&{&&
&&&&&&&&view.measure(MeasureSpec.makeMeasureSpec(0,&MeasureSpec.UNSPECIFIED),&MeasureSpec.makeMeasureSpec(0,&MeasureSpec.UNSPECIFIED));&&
&&&&&&&&view.layout(0,&0,&view.getMeasuredWidth(),&view.getMeasuredHeight());&&
&&&&&&&&view.buildDrawingCache();&&
&&&&&&&&Bitmap&bitmap&=&view.getDrawingCache();&&
&&&&&&&&return&&&
&&&&&*&常用事件监听,用来处理通常的网络错误,授权验证错误等&
&&&&&*&@author&xiaanming&
&&&&public&class&MKGeneralListenerImpl&implements&MKGeneralListener{&&
&&&&&&&&/**&
&&&&&&&&&*&一些网络状态的错误处理回调函数&
&&&&&&&&&*/&&
&&&&&&&&@Override&&
&&&&&&&&public&void&onGetNetworkState(int&iError)&{&&
&&&&&&&&&&&&if&(iError&==&MKEvent.ERROR_NETWORK_CONNECT)&{&&
&&&&&&&&&&&&&&&&showToast("您的网络出错啦!");&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&/**&
&&&&&&&&&*&授权错误的时候调用的回调函数&
&&&&&&&&&*/&&
&&&&&&&&@Override&&
&&&&&&&&public&void&onGetPermissionState(int&iError)&{&&
&&&&&&&&&&&&if&(iError&==&&MKEvent.ERROR_PERMISSION_DENIED)&{&&
&&&&&&&&&&&&&&&&showToast("API&KEY错误,&请检查!");&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&@Override&&
&&&&protected&void&onResume()&{&&
&&&&&&&&//MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause() &&
&&&&&&&&mMapView.onResume();&&
&&&&&&&&super.onResume();&&
&&&&@Override&&
&&&&protected&void&onPause()&{&&
&&&&&&&&//MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause() &&
&&&&&&&&mMapView.onPause();&&
&&&&&&&&super.onPause();&&
&&&&@Override&&
&&&&protected&void&onDestroy()&{&&
&&&&&&&&//MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy() &&
&&&&&&&&mMapView.destroy();&&
&&&&&&&&&&
&&&&&&&&//退出应用调用BMapManager的destroy()方法 &&
&&&&&&&&if(mBMapManager&!=&null){&&
&&&&&&&&&&&&mBMapManager.destroy();&&
&&&&&&&&&&&&mBMapManager&=&null;&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&//退出时销毁定位 &&
&&&&&&&&if&(mLocClient&!=&null){&&
&&&&&&&&&&&&mLocClient.stop();&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&super.onDestroy();&&
package com.example.
import android.app.A
import android.graphics.B
import android.os.B
import android.util.L
import android.view.LayoutI
import android.view.V
import android.view.View.MeasureS
import android.view.View.OnClickL
import android.widget.B
import android.widget.TextV
import android.widget.T
import com.baidu.location.BDL
import com.baidu.location.BDLocationL
import com.baidu.location.LocationC
import com.baidu.location.LocationClientO
import com.baidu.mapapi.BMapM
import com.baidu.mapapi.MKGeneralL
import com.baidu.mapapi.map.LocationD
import com.baidu.mapapi.map.MKE
import com.baidu.mapapi.map.MapC
import com.baidu.mapapi.map.MapV
import com.baidu.mapapi.map.MyLocationO
import com.baidu.mapapi.map.PopupClickL
import com.baidu.mapapi.map.PopupO
import com.api.basestruct.GeoP
public class MainActivity extends Activity {
private Toast mT
private BMapManager mBMapM
private MapView mMapView =
private MapController mMapController =
* 定位SDK的核心类
private LocationClient mLocC
* 用户位置信息
private LocationData mLocD
* 我的位置图层
private LocationOverlay myLocationOverlay =
* 弹出窗口图层
private PopupOverlay mPopupOverlay
private boolean isRequest =//是否手动触发请求定位
private boolean isFirstLoc =//是否首次定位
* 弹出窗口图层的View
private View mPopupV
private BDL
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//使用地图sdk前需先初始化BMapManager,这个必须在setContentView()先初始化
mBMapManager = new BMapManager(this);
//第一个参数是API key,
//第二个参数是常用事件监听,用来处理通常的网络错误,授权验证错误等,你也可以不添加这个回调接口
mBMapManager.init("7aea513eaa7a17b9413b4b", new MKGeneralListenerImpl());
setContentView(R.layout.activity_main);
//点击按钮手动请求定位
((Button) findViewById(R.id.request)).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
requestLocation();
mMapView = (MapView) findViewById(R.id.bmapView); //获取百度地图控件实例
mMapController = mMapView.getController(); //获取地图控制器
mMapController.enableClick(true);
//设置地图是否响应点击事件
mMapController.setZoom(14);
//设置地图缩放级别
mMapView.setBuiltInZoomControls(true);
//显示内置缩放控件
mMapView.setTraffic(true);
//设置交通信息图
mMapView.setSatellite(true);
//设置卫星图
mMapController.setOverlooking(-45);
//设置地图俯视角度 ,范围:0~ -45
mPopupView = LayoutInflater.from(this).inflate(R.layout.pop_layout, null);
//实例化弹出窗口图层
mPopupOverlay = new PopupOverlay(mMapView ,new PopupClickListener() {
* 点击弹出窗口图层回调的方法
public void onClickedPopup(int arg0) {
//隐藏弹出窗口图层
mPopupOverlay.hidePop();
//实例化定位服务,LocationClient类必须在主线程中声明
mLocClient = new LocationClient(getApplicationContext());
mLocClient.registerLocationListener(new BDLocationListenerImpl());//注册定位监听接口
* LocationClientOption 该类用来设置定位SDK的定位方式。
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); //打开GPRS
option.setAddrType("all");//返回的定位结果包含地址信息
option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02
option.setPriority(LocationClientOption.GpsFirst); // 设置GPS优先
option.setScanSpan(5000); //设置发起定位请求的间隔时间为5000ms
option.disableCache(false);//禁止启用缓存定位
option.setPoiNumber(5);
//最多返回POI个数
option.setPoiDistance(1000); //poi查询距离
option.setPoiExtraInfo(true);
//是否需要POI的电话和地址等详细信息
mLocClient.setLocOption(option);
//设置定位参数
mLocClient.start();
// 调用此方法开始定位
//定位图层初始化
myLocationOverlay = new LocationOverlay(mMapView);
//实例化定位数据,并设置在我的位置图层
mLocData = new LocationData();
myLocationOverlay.setData(mLocData);
//添加定位图层
mMapView.getOverlays().add(myLocationOverlay);
//修改定位数据后刷新图层生效
mMapView.refresh();
* 定位接口,需要实现两个方法
* @author xiaanming
public class BDLocationListenerImpl implements BDLocationListener {
* 接收异步返回的定位结果,参数是BDLocation类型参数
public void onReceiveLocation(BDLocation location) {
if (location == null) {
StringBuffer sb = new StringBuffer(256);
sb.append("time : ");
sb.append(location.getTime());
sb.append("\nerror code : ");
sb.append(location.getLocType());
sb.append("\nlatitude : ");
sb.append(location.getLatitude());
sb.append("\nlontitude : ");
sb.append(location.getLongitude());
sb.append("\nradius : ");
sb.append(location.getRadius());
if (location.getLocType() == BDLocation.TypeGpsLocation){
sb.append("\nspeed : ");
sb.append(location.getSpeed());
sb.append("\nsatellite : ");
sb.append(location.getSatelliteNumber());
} else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
sb.append("\naddr : ");
sb.append(location.getAddrStr());
Log.e("log", sb.toString());
MainActivity.this.location =
mLocData.latitude = location.getLatitude();
mLocData.longitude = location.getLongitude();
//如果不显示定位精度圈,将accuracy赋值为0即可
mLocData.accuracy = location.getRadius();
mLocData.direction = location.getDerect();
//将定位数据设置到定位图层里
myLocationOverlay.setData(mLocData);
//更新图层数据执行刷新后生效
mMapView.refresh();
if(isFirstLoc || isRequest){
//将给定的位置点以动画形式移动至地图中心
mMapController.animateTo(new GeoPoint(
(int) (location.getLatitude() * 1e6), (int) (location
.getLongitude() * 1e6)));
showPopupOverlay(location);
isRequest =
isFirstLoc =
* 接收异步返回的POI查询结果,参数是BDLocation类型参数
public void onReceivePoi(BDLocation poiLocation) {
//继承MyLocationOverlay重写dispatchTap方法
private class LocationOverlay extends MyLocationOverlay{
public LocationOverlay(MapView arg0) {
super(arg0);
* 在“我的位置”坐标上处理点击事件。
protected boolean dispatchTap() {
//点击我的位置显示PopupOverlay
showPopupOverlay(location);
return super.dispatchTap();
* 显示弹出窗口图层PopupOverlay
* @param location
private void showPopupOverlay(BDLocation location){
TextView popText = ((TextView)mPopupView.findViewById(R.id.location_tips));
popText.setText("[我的位置]\n" + location.getAddrStr());
mPopupOverlay.showPopup(getBitmapFromView(popText),
new GeoPoint((int)(location.getLatitude()*1e6), (int)(location.getLongitude()*1e6)),
* 手动请求定位的方法
public void requestLocation() {
isRequest =
if(mLocClient != null && mLocClient.isStarted()){
showToast("正在定位......");
mLocClient.requestLocation();
Log.d("log", "locClient is null or not started");
* 显示Toast消息
* @param msg
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();
* 将View转换成Bitmap的方法
* @param view
public static Bitmap getBitmapFromView(View view) {
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
* 常用事件监听,用来处理通常的网络错误,授权验证错误等
* @author xiaanming
public class MKGeneralListenerImpl implements MKGeneralListener{
* 一些网络状态的错误处理回调函数
public void onGetNetworkState(int iError) {
if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
showToast("您的网络出错啦!");
* 授权错误的时候调用的回调函数
public void onGetPermissionState(int iError) {
if (iError ==
MKEvent.ERROR_PERMISSION_DENIED) {
showToast("API KEY错误, 请检查!");
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 =
//退出时销毁定位
if (mLocClient != null){
mLocClient.stop();
super.onDestroy();
LocationClient&定位SDK的核心类,LocationClient类必须在主线程中声明。需要Context类型的参数。Context需要时全进程有效的context,推荐用getApplicationConext获取全进程有效的context,我们调用registerLocationListener(BDLocationListener)方法来注册定位监听接口,BDLocationListener里面有两个方法,onReceiveLocation()(接收异步返回的定位结果),onReceivePoi()(接收异步返回的POI查询结果,POI是“Point of Interest”的缩写,可以翻译成“信息点”,每个POI包含四方面信息,名称、类别、经度、纬度、附近的酒店、饭店,商铺等信息。我们可以叫它为“导航地图信息”,导航地图数据是整个导航产业的基石),我们这里只需要重写onReceiveLocation就行了
BDLocation&封装了定位SDK的定位结果,在BDLocationListener的onReceive方法中获取。通过该类用户可以获取error code,位置的坐标,精度半径,地址等信息,对于其getLocType ()方法获取的error code一些情况
61 : GPS定位结果
62 : 扫描整合定位依据失败。此时定位结果无效。
63 : 网络异常,没有成功向服务器发起请求。此时定位结果无效。
65 : 定位缓存的结果。
66 : 离线定位结果。通过requestOfflineLocaiton调用时对应的返回结果
67 : 离线定位失败。通过requestOfflineLocaiton调用时对应的返回结果
68 : 网络连接失败时,查找本地离线定位时对应的返回结果
161: 表示网络定位结果
162~167: 服务端定位失败
LocationClientOption 用来设置定位SDK的定位方式,比如设置打开GPS,设置是否需要地址信息,设置发起定位请求的间隔时间等等,参数设置完后调用LocationClient 的setLocOption方法
LocationOverlay &MyLocationOverlay的子类,重写里面的dispatchTap()方法,显示弹出窗口图层PopupOverlay,调用mMapView.getOverlays().add(myLocationOverlay)就将我的位置图层添加到地图里面
PopupOverlay 弹出图层,这个类还是比较简单,里面只有三个方法,hidePop() (隐藏弹出图层)showPopup(Bitmap pop, GeoPoint point, int yOffset) (显示弹出图层)和showPopup显示多张图片的重载方法,由于showPopup方法只接受Bitmap对象,所以我们必须将我们的弹出图层View对象转换成Bitmap对象,我们调用getBitmapFromView方法就实现这一转换
BDLocationListener接口的onReceiveLocation(BDLocation location) 方法我还要重点讲解下,我们会发现onReceiveLocation方法会反复执行,他执行的间隔跟LocationClientOption类的setScanSpan()方法设定的值有关,我们设定的是5000毫秒,则onReceiveLocation方法每隔5秒执行一次,注意,当我们设定的值大于1000(ms),定位SDK内部使用定时定位模式。调用requestLocation( )后,每隔设定的时间,定位SDK就会进行一次定位。如果定位SDK根据定位依据发现位置没有发生变化,就不会发起网络请求,返回上一次定位的结果;如果发现位置改变,就进行网络请求进行定位,得到新的定位结果。如果你只需要定位一次的话,这个设置小于1000,或者不用设置就可以了,定时定位时,调用一次requestLocation,会定时监听到定位结果
四 . 在运行程序之前,我们还必须在AndroidManifest.xml进行相关配置和权限的声明
在application标签中声明service组件,每个app拥有自己单独的定位service
&service&&
&&&&&&&&&&&&android:name="com.baidu.location.f"&&
&&&&&&&&&&&&android:enabled="true"&&
&&&&&&&&&&&&android:process=":remote"&&&&
&&&&&&&&&/service&&&
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" &
&/service&
声明相关的使用权限
&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_WIFI_STATE"&/&&&
&uses-permission&android:name="android.permission.ACCESS_NETWORK_STATE"/&&&
&uses-permission&android:name="android.permission.CHANGE_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.INTERNET"&/&&&
&uses-permission&android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"&/&&&
&uses-permission&android:name="android.permission.READ_LOGS"&/&&&
&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_WIFI_STATE" /&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&
&uses-permission android:name="android.permission.CHANGE_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.INTERNET" /&
&uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /&
&uses-permission android:name="android.permission.READ_LOGS" /&
五 . 运行结果
今天的讲解到此结束,有疑问的朋友请在下面留言。之后会持续介绍百度地图的使用,欢迎大家关注!
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读

我要回帖

更多关于 reactjs 点击事件处理 的文章

 

随机推荐