Android 百度地图定位、添加覆盖物()
来源:互联网 发布:windows redstone 编辑:程序博客网 时间:2024/04/30 00:19
百度地图
百度地图的简单步骤
1.将百度地图引入自己的工程中. eclipse开发
MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
mMap.setMapStatus(msu); //让地图的显示距离为500米
2.引入定位功能,
定位功能
定位前需要在清单文件里,加一个service
LocationClient //定位的一个类,
LocationClientOption //进行一些定位的设置,需设置给 LocationClient
如下::
//LocationClientOption option = new LocationClientOption();
// option.setCoorType("bd09ll");
/// option.setIsNeedAddress(true); //地址
// option.setOpenGps(true); //开启GPS
// option.setScanSpan(1000); //一秒定次位
// mLocationClient.setLocOption(option);
BDLocationListener //注册的一个接口,定义一个类实现
在实现方法里转成MyLocationData
//如下::
// @Override
public void onReceiveLocation(BDLocation location) {
MyLocationData mLocationData =
new MyLocationData.Builder().accuracy(location.getRadius())
.latitude(location.getLatitude())//
.longitude(location.getLongitude())//
.build();
mMap.setMyLocationData(mLocationData); //把定位的一些数据
设置给地图
再这里在判断一下是不是第一次定位,
3.添加覆盖物
BitmapDescriptor bit = BitmapDescriptorFactory.fromResource
(R.drawable.ic_launcher);
//给一个添加覆盖物的坐标
LatLng lat =new LatLng(39.963175, 116.400244);
//覆盖物设置
OverlayOptions option = new MarkerOptions().position(lat).icon
(bit).zIndex(5);
// 这是自动跳到添加覆盖物的坐标那
MapStatusUpdate msu =MapStatusUpdateFactory.newLatLng(lat );
//设置给地图
mMap.setMapStatus(msu);
///////////////////
Marker marker =(Marker) mMap.addOverlay(option); ///添加图层
Eclipse工程配置方法
第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;
步骤::
第一步:创建并配置工程(具体方法参见工程配置部分的介绍);
第二步:在AndroidManifest中添加开发密钥、所需权限等信息;
(1)在application中添加开发密钥
<application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发者 key" /> </application>
2)添加所需权限
<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.WAKE_LOCK"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_SETTINGS" />
第三步,在布局xml文件中添加地图控件;
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />
主xml布局里只有一个mapview的控件,控制切换,用的是菜单键
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.xuexue.demo.MainActivity" > <item android:id="@+id/action_normal" android:orderInCategory="100" android:title="普通地图" /> <item android:id="@+id/action_site" android:orderInCategory="100" android:title="卫星地图" /> <item android:id="@+id/action_traffic" android:orderInCategory="100" android:title="实时交通图" /> <item android:id="@+id/action_mylocation" android:orderInCategory="100" android:title="我的位置" /> <item android:id="@+id/action_overlay" android:orderInCategory="100" android:title="添加覆盖物" /></menu>
下面是java代码
package com.xuexue.demo;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.location.LocationClientOption.LocationMode;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.Marker;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.MyLocationConfiguration;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.map.OverlayOptions;import com.baidu.mapapi.map.TextOptions;import com.baidu.mapapi.model.LatLng;import android.support.v7.app.ActionBarActivity;import android.graphics.Color;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.Window;import android.view.WindowManager;import android.widget.Toast;public class MainActivity extends ActionBarActivity {private MapView mMapView;private BaiduMap mMap;private LocationClient mLocationClient;private boolean isEnable;private boolean isFirst=true;private MyBDLocationListener mBDLocationListener;private double mLat;private double mLong;@Overrideprotected void onCreate(Bundle savedInstanceState) {// 去掉标题requestWindowFeature(Window.FEATURE_NO_TITLE);super.onCreate(savedInstanceState);// 在使用SDK各组件之前初始化context信息,传入ApplicationContext// 注意该方法要再setContentView方法之前实现SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);// 初始化地图initMapView();// 定位initLocation();}private void initLocation() {mLocationClient = new LocationClient(this);mBDLocationListener = new MyBDLocationListener();mLocationClient.registerLocationListener(mBDLocationListener);// 设置定位的一些参数LocationClientOption option = new LocationClientOption();option.setCoorType("bd09ll");option.setIsNeedAddress(true);option.setOpenGps(true);option.setScanSpan(1000);mLocationClient.setLocOption(option);}private void initMapView() {// 获取地图控件引用mMapView = (MapView) findViewById(R.id.bmapView);mMap = mMapView.getMap();mMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);// 设置初始距离是500米MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);mMap.setMapStatus(msu);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.action_normal: // 普通地图mMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);break;case R.id.action_site: // 卫星图mMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);break;case R.id.action_traffic: // 实施交通图if (isEnable) {mMap.setTrafficEnabled(false);isEnable = false;} else {mMap.setTrafficEnabled(true);isEnable = true;}break;case R.id.action_mylocation:ToMyLoaction();break;case R.id.action_overlay:OverLay();break;default:break;}return super.onOptionsItemSelected(item);}private void OverLay() {mMap.clear(); //需要覆盖物的Maker OverLayBitmapDescriptor bit = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher); LatLng lat =new LatLng(39.93923, 116.357428); //给一个添加覆盖物的坐标 //覆盖物设置 OverlayOptions option = new MarkerOptions().position(lat).icon(bit).zIndex(5); MapStatusUpdate msu =MapStatusUpdateFactory.newLatLng(lat); //设置给地图 mMap.setMapStatus(msu); //构建文字Option对象,用于在地图上添加文字 OverlayOptions option = new TextOptions() .bgColor(0xAAFFFF00) .fontSize(24) .fontColor(0xFFFF00FF) .text("我我") .rotate(-30) .position(lat); //在地图上添加该文字对象并显示 mMap.addOverlay(option); ///添加图层}public class MyBDLocationListener implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {MyLocationData mLocationData = new MyLocationData.Builder()//.accuracy(location.getRadius())//.latitude(location.getLatitude())//.longitude(location.getLongitude())//.build();mMap.setMyLocationData(mLocationData); //把定位的一些数据设置给地图// 设置定位图标//MyLocationConfiguration config = new MyLocationConfiguration(//com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL,//true, null);mLat = location.getLatitude();mLong = location.getLongitude();//判断是否第一次定位if (isFirst) {ToMyLoaction();isFirst =false;Toast.makeText(getApplicationContext(), location.getAddrStr(), Toast.LENGTH_SHORT).show();}}}private void ToMyLoaction() {//定位经纬度LatLng lat = new LatLng(mLat,mLong);MapStatusUpdate msu =MapStatusUpdateFactory.newLatLng(lat );//设置给地图mMap.setMapStatus(msu);}@Overrideprotected void onStart() {super.onStart();mMap.setMyLocationEnabled(true);if (!mLocationClient.isStarted())mLocationClient.start();}@Overrideprotected void onStop() {super.onStop();mMap.setMyLocationEnabled(false);if(mLocationClient.isStarted())mLocationClient.stop();}@Overrideprotected void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mMapView.onDestroy();}}
0 0
- Android 百度地图定位、添加覆盖物()
- Android使用百度地图---添加覆盖物及定位
- Android 百度地图(二)——地图切换、定位、添加覆盖物、搜索位置、连线
- Android百度地图3.5.0 定位与覆盖物的添加(Location and Overlay)
- android 百度地图定位与覆盖物的添加,以及他们的点击事件
- 百度地图添加覆盖物
- android--百度地图--方向定位+覆盖物显示
- Android百度地图,绘制,覆盖物,导航,定位,细腻分解!
- Android--百度地图学习(第三章)如何给地图添加多个覆盖物
- Android 百度地图频繁添加覆盖物后刷新出现地图闪烁问题(个人)
- 百度地图 定位加覆盖物(笔记,方便查阅)
- 在android百度地图上添加自定义覆盖物
- 百度地图----->地图类型、定位模式、实时交通、我的位置、添加覆盖物、覆盖物详情及提示
- 百度地图API开发 实现定位 添加覆盖物 POST云存储 GET云检索
- 百度地图覆盖物和定位覆盖物
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用
- SQL语句
- ORACLE ERP 的前世今生
- java到底是值传递还是引用传递?
- 【行业特稿】人工智能/虚拟现实/大数据/其他科技创业者
- 关于iOS多线程,你看我就够了
- Android 百度地图定位、添加覆盖物()
- HTML/CSS: background-clip 与 background-origin的区别
- 正则表达式示例
- 去除句子中重复单词(勘重,MAP,SET,迭代器的使用)
- H.264压缩编码算法介绍
- 各种优化方法总结笔记(sgd/momentum/Nesterov/adagrad/adadelta)
- AndroidStudio出现tools:replace="android:icon"问题
- Node.js--简单后台
- 数据库中char, varchar, nvarchar的差异