百度地图

应用里面 自带地图 搜房网

  1. 下载百度地图的sdk 熟悉api 注冊百度开发人员的账号
  2. 2.12 仅仅要有一个ak就能够 高版本号须要提供应用程序的包名和签名返回开发人员的序列号

使用百度地图步骤

  1. 申请api key
  2. 创建project
  3. 引用函数库 armeabi 仅仅能兼容arme cpu
  4. 联网权限
  5. 初始化地图引擎 (2.13 在代码中初始化, 高版本号在清单文件里配置)
  6. 引用布局

MapView 显示地图 V

继承ViewGroup 自己定义控件 专门用来显示地图

1. MapController    getController()   获取到地图的控制器
2. 让mapView的生命周期 必须和anctivity绑死在一起 onResume onPause destroy
3. setBuiltInZoomControls(boolean on) 设置是否启用内置的缩放控件 回调 MKMapViewListener

BMapManager M

能够初始化地图引擎

1. destroy()  当程序退出的时候调用
2. start() 当程序可见的时候调用
3. stop() 当程序不可见的时候调用
4. init(String strKey, MKGeneralListener listener) 方法校验key信息, 回调

MapController 地图控制器 C

专门控制地图的操作

1. animateTo(GeoPoint point)   移动到指定位置
2. setCenter(GeoPoint point) 在给定的中心点GeoPoint上设置地图视图。
3. setZoom(float zoomLevel) 设置地图的缩放级别
4. 缩放
5. 旋转
6. 改动鸟瞰角度

图层

1. 卫星图层 mapView.setSatellite(true);
2. 交通图层 mapView.setTraffic(true);

覆盖物

覆盖物包含:
覆盖物的抽象基类: Overlay(核心类)
几何图形: GraphicsOverlay
文字: TextOverlay
分类条目: ItemizedOverlay
本地搜索: PoiOverlay
路线规划: RouteOverlay
换成路线: TransitOverlay
我的位置: MyLocationOverlay
步骤:
* 1.获取到地图上的覆盖物
List<Overlay> overlays = mapView.getOverlays(); * 2.创建新的覆盖物
几何GraphicsOverlay, 文字TextOverlay, 多条目(以下详细实现)
* 3.拿到地图上的覆盖物 加入新的覆盖物
overlays.add(overlay); * 4.刷新地图
mapView.refresh(); * GraphicsOverlay: GraphicsOverlay overlay = new GraphicsOverlay(mapView); // 描写叙述一个集合图形
Geometry arg0=new Geometry(); // 图形的形状
arg0.setCircle(point, 1000); //參数1,圆心 參数2,半径 单位(米) Symbol arg1 = new Symbol(); //图形的样式
Symbol.Color color = new Symbol().new Color();
color.alpha=155;
color.red=100;
color.blue=200;
color.green=0;
// 设置图形的样式
arg1.setSurface(color, 1, 1); Graphic graphic=new Graphic(arg0, arg1);
// 绘制
overlay.setData(graphic); * TextOverlay TextOverlay overlay=new TextOverlay(mapView);
// 绘制
TextItem item=new TextItem();
item.align=TextItem.ALIGN_CENTER;// 居中对齐
item.pt=point;// 让文字显示在黑马这个位置
item.fontSize=14;
item.fontColor=getColor();
item.text="黑马程序猿";
overlay.addText(item); * ItemizedOverlay ItemizedOverlay<OverlayItem> itemizedOverlay = new ItemizedOverlay<OverlayItem>(
getResources().getDrawable(R.drawable.eat_icon), mapView) {
//条目的点击事件!!!
@Override
protected boolean onTap(int index) {
OverlayItem item = getItem(index);
GeoPoint point = item.getPoint();
//更新view气泡的的位置(之前已经初始化)
mapView.updateViewLayout(pop, new MapView.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
point, MapView.LayoutParams.BOTTOM_CENTER));
pop.setVisibility(View.VISIBLE);// 让气泡显示出来
TextView tv=(TextView) pop.findViewById(R.id.title);
tv.setText(item.getTitle());
// String snippet = item.getSnippet();//得到描写叙述信息
// Toast.makeText(getApplicationContext(), snippet, 0).show(); return true;//表示消费掉了
}
}; OverlayItem item = new OverlayItem(point, "黑马程序猿", "不10000就业不交一分钱学费");// 1坐标点 2 标题 3 描写叙述
itemizedOverlay.addItem(item); item = new OverlayItem(new GeoPoint(latitude + 1000, longitude), "向北",
"添加纬度");
itemizedOverlay.addItem(item); item = new OverlayItem(new GeoPoint(latitude, longitude + 1000), "向东",
"添加经度");
itemizedOverlay.addItem(item); item = new OverlayItem(new GeoPoint(latitude - 1000, longitude - 1000),
"向西南", "降低经纬度");
itemizedOverlay.addItem(item); // 步骤3
overlays.add(itemizedOverlay);
// 步骤4
mapView.refresh(); * PoiOverlay: 搜索后显示本地覆盖物, 例如以下.
* RouteOverlay: 驾车路线搜索后显示路线, 例如以下.
* TransitOverlay: 公交换乘路线显示, 例如以下.
* MyLocationOverlay: 我的位置覆盖物, 例如以下.

搜索

* 核心类: MKSearch和MKSearchListener

    1. MKSearch  搜索的api  用于位置检索/周边检索/公交检索/范围检索/驾乘检索/步行检索
2. MKSearchListener 搜素结构 会回调到该接口里的方法 * 矩形/圆形/全城区域内 搜索比較兴趣点
MKSearch search = new MKSearch();
search.init(manager,MKSearchListener)//因为此接口的方法特别多, 此处能够使用适配器设计模式 //第一个參数:keyword(如宾馆) 第二个參数(左上角的点) 第三个參数(右下角的点)
1. search.poiSearchInbounds(String key, GeoPoint ptLB, GeoPoint ptRT) 矩形区域搜索
2. search.poiSearchNearBy(String key, GeoPoint pt, int radius) 圆形区域搜素
3. search.poiSearchInCity("北京", "麦当劳");
search.goToPoiPage(index);//显示下一页(一页显示10条) 在MKSearchListener里的onGetPoiResult()中回调. public void onGetPoiResult(MKPoiResult result, int type, int iError) {
if(iError==0){
// 有结果
// 把结果绘制到手机屏幕(地图)上
// 步骤1 获取到全部的覆盖物
List<Overlay> overlays = mapView.getOverlays();
//步骤2 创建信的覆盖物
PoiOverlay overlay=new PoiOverlay(SearchInRectActivity.this, mapView);
ArrayList<MKPoiInfo> allPoi = result.getAllPoi();
overlay.setData(allPoi);
// 步骤3 把覆盖物加入到之前的覆盖物的集合上
overlays.add(overlay);
//步骤4 刷新界面
mapView.refresh();
}
} * 驾车/公交/步行路线搜索 // 1 開始的城市 2開始位置 3目的地城市 4目的地坐标
1.search.drivingSearch(String startCity, MKPlanNode start, String endCity, MKPlanNode end) //驾车
2.search.transitSearch(String startCity, MKPlanNode start, MKPlanNode end);//公交
3.search.walkingSearch(String startCity, MKPlanNode start, MKPlanNode end);//步行 //在MKSearchListener里的onGetDrivingRouteResult中回调. @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); MKSearch search=new MKSearch();
search.init(manager, new BusAdapter()); MKPlanNode start=new MKPlanNode();//地点: 包含位置和名字
start.pt=point; MKPlanNode end=new MKPlanNode();
end.pt=new GeoPoint(40065796, 116349868); search.setDrivingPolicy(MKSearch.ECAR_TIME_FIRST);// 设置开车的方案
search.drivingSearch("北京", start, "北京", end);//驾车(方式1) search.setTransitPolicy(MKSearch.EBUS_WALK_FIRST);
search.transitSearch("北京", start, end); //公交(方式2) search.walkingSearch("北京", start, end); //步行(方式3)
} private class BusAdapter extends MKSearchAdapter{
@Override
public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) {
if(iError==0){
//此处仅仅显示了公交的回调, 驾车和步行没写, 具体见项目. // 公交的方案
MKTransitRoutePlan plan = result.getPlan(0);
List<Overlay> overlays = mapView.getOverlays();
TransitOverlay overlay=new TransitOverlay(BusActivity.this, mapView);
overlay.setData(plan); overlays.add(overlay);
mapView.refresh();
}
}
}

定位:

* 定位的方式  

    1. gps
2. wifi
3. 基站 * 系统原生定位: //调用的是谷歌的API, 火星坐标, 不准确.
LocationManager lm = (LocationManager)getSystemService(LOCATION_SERVICE); * 百度地图定位: 须要: liblocSDK.so locSDK.jar 核心API: LocationClient(LocationClientOption) BDLocationListener public class MyLocationActivity extends BaseActivity {
public LocationClient mLocationClient = null;
// 回调方法
public BDLocationListener myListener = new MyLocationListener(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocationClient = new LocationClient(getApplicationContext()); // 声明LocationClient类
mLocationClient.registerLocationListener(myListener); // 注冊监听函数 LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开GPS
option.setAddrType("all");// 返回的定位结果包括地址信息
option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms
option.disableCache(true);// 禁止启用缓存定位
option.setPoiNumber(5); // 最多返回POI个数
option.setPoiDistance(1000); // poi查询距离
option.setPoiExtraInfo(true); // 是否须要POI的电话和地址等具体信息
mLocationClient.setLocOption(option); }
@Override
protected void onStart() {
super.onStart();
mLocationClient.start();
if(mLocationClient!=null &&mLocationClient.isStarted()){
mLocationClient.requestLocation();// 请求定位的位置
}
}
@Override
protected void onStop() {
super.onStop();
mLocationClient.stop();
} public class MyLocationListener implements BDLocationListener {
// 接受到了定位的位置
@Override
public void onReceiveLocation(BDLocation location) {
double latitude2 = location.getLatitude();
double longitude2 = location.getLongitude();
Toast.makeText(getApplicationContext(), latitude2+"..."+longitude2, 0).show(); MyLocationOverlay overlay=new MyLocationOverlay(mapView);
LocationData data=new LocationData();
data.latitude=latitude2;
data.longitude=longitude2;
overlay.setData(data); mapView.getOverlays().add(overlay);
mapView.refresh();
} // 接受到了 周围的兴趣点
@Override
public void onReceivePoi(BDLocation arg0) { } }
}

安卓---项目中插入百度地图sdk的更多相关文章

  1. Android Studio 项目中集成百度地图SDK报Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I错误

    Android Studio 项目中集成百度地图SDK报以下错误: java.lang.UnsatisfiedLinkError: Native method not found: com.baidu ...

  2. Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

      标签: Android百度地图API Key  分类: Android 百度地图开发(2)    最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...

  3. 【月入41万】Mono For Android中使用百度地图SDK

    借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...

  4. IOS学习:在工程中添加百度地图SDK

    1.将下载下来的sdk中的inc文件夹.mapapi.bundle.libbaidumapapi.a添加到工程中,其中libbaiduapi.a有两个,一个对应模拟器一个对应真机,导入方法如下: 第一 ...

  5. MVC项目中使用百度地图

    已经很久没更新博客了,因为最近一直在学习前端的知识,没那么多时间,写博客或者写文章不但没有钱,写得好还好说,如果写得不好,一些吃瓜群众,不仅要喷你,搞不好还要人身攻击就不好了.所以写博客的人,脸皮得厚 ...

  6. vue 项目中引用百度地图

    新建map.js export const BaiduMap = { init: function() { const BMapURL = 'https://api.map.baidu.com/api ...

  7. 如何在HTMl网页中插入百度地图

    方法/步骤 1.打开"百度地图生成器"的网址:http://api.map.baidu.com/lbsapi/creatmap/index.html 如下图: 2.在"1 ...

  8. vue项目中使用百度地图的方法

    1.在百度地图申请密钥: http://lbsyun.baidu.com/  将 <script type="text/javascript" src="http: ...

  9. react项目中引入百度地图打包报错问题

    一.我正常引入百度地图,调试时候是好使的,但是打包时候就报错 引入方法如下: 报错如图 正常调试是好使的,但是打包报这个错,解析不了这个BMap,那么怎么办呢? 然后我就转用了window办法,虽然因 ...

随机推荐

  1. 浅谈MySQL 数据库性能优化

    MySQL数据库是 IO 密集型的程序,和其他数据库一样,主要功能就是数据的持久化以及数据的管理工作.本文侧重通过优化MySQL 数据库缓存参数如查询缓存,表缓存,日志缓存,索引缓存,innodb缓存 ...

  2. 10165 - Stone Game(Nim游戏)

    UVA 10165 - Stone Game 题目链接 题意:给定n堆石子,每次能在一堆取1到多个.取到最后一个赢,问谁赢 思路:就裸的的Nim游戏,利用定理求解 代码: #include <s ...

  3. .net三步配置错误页面,让你的站点远离不和谐的页面

    假设你的站点出现一堆让人看不懂的报错,那么你就不是一个合格的程序猿.也不是一个合格的站长. 以下的方面能够帮助你的站点远离让人头大的页面. 第一步:配置web.config 打开web.config, ...

  4. React-TodoList

    React入门最好的学习实例-TodoList 前言 React 的核心思想是:封装组件,各个组件维护自己的状态和 UI,当状态变更,自动重新渲染整个组件. 最近前端界闹的沸沸扬扬的技术当属react ...

  5. Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)

    在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度 1.QObject类的定时器 QObje ...

  6. JSP中两种include的区别

    首先说明这两种都是什么: <%@ include file=”relativeURI”%> 可以叫作静态include(静态包含),是jsp指令中的一种,(JSP指令控制JSP编译器如何去 ...

  7. java中synchronized的使用方法与具体解释

    Java语言的keyword.当它用来修饰一个方法或者一个代码块的时候,可以保证在同一时刻最多仅仅有一个线程运行该段代码. 一.当两个并发线程訪问同一个对象object中的这个synchronized ...

  8. Swift - 解析XML格式数据(分别使用GDataXML和DDXML)

    在做一些应用的时候经常需要用到XML解析,比如获取Web Service数据,读取RSS新闻或者博客数据源.下面演示了两个非常方便高效的XML库在Swift里的调用方法. 假设需要被解析的XML数据文 ...

  9. C#反射Assembly 具体说明

    1.对C#反射机制的理解 2.概念理解后,必须找到方法去完毕,给出管理的主要语法 3.终于给出有用的样例,反射出来dll中的方法 反射是一个程序集发现及执行的过程,通过反射能够得到*.exe或*.dl ...

  10. Hbase集群环境搭建

    Hbase数据库依赖 Hadoop和zookeeper,所以,安装Hbase之前,需要先把zookeeper集群搭建好.(当然,Hbase有内建的zookeeper,不过不建议使用).Hbase配置上 ...