安卓实现百度地图调用详细解释
来源:互联网 发布:微信红包软件 编辑:程序博客网 时间:2024/06/10 23:10
1、申请一个百度账号
2、输入http://developer.baidu.com/map/网址进入百度地图api
3、找到android开发,下载所需要的SDK
4、点击“开发”里面android地图SDK,了解详细情况
5、点击“获取密匙”-》创建应用——》输入应用名称,应用类型android SDK,数字签名是eclipse里面window里面Preferences的android里面的Build里面查找SHA1,进行粘贴复制
6、包名完全和自己建的工程的包一样名称,然后点击提交
7、讲下载的SDK导入到自己的文件中
8、根据百度地图提供的开发指南,首先在AndroidManifest中添加开发密钥、所需权限等信息;
(1)在application中添加开发密钥
在<application> 中粘贴
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
开发者 key改为刚才创建的应用所生成的特有的密匙
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" />
在应用程序创建时初始化 SDK引用的Context 全局变量:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
}
}
注意:在SDK各功能组件使用之前都需要调用
SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中
创建地图Activity,管理地图生命周期;
public class MainActivity extends Activity {
MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
}
然后进行完善实现定位以等其他功能,具体MainActivity中代码如
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import android.support.v7.app.ActionBarActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
private MapView mMapView = null;
private BaiduMap mbitMap;
private Context context;
//定位相关
private LocationClient mLocationClient;
private MyLocationListener mMyLocationListener;
private boolean isFirstIn = true;
private double mLatitude;
private double mLongtitude;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
this.context=this;
initView();
initLocation();
}
private void initLocation() {
// TODO Auto-generated method stub
mLocationClient = new LocationClient(this);
mMyLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(mMyLocationListener);
LocationClientOption option = new LocationClientOption();
option.setCoorType("bd09ll");
option.setIsNeedAddress(true);
option.setOpenGps(true);
option.setScanSpan(1000);
mLocationClient.setLocOption(option);
}
private void initView() {
// TODO Auto-generated method stub
mMapView = (MapView) findViewById(R.id.mapView);
mbitMap = mMapView.getMap();
MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
mbitMap.setMapStatus(msu);
}
protected void onResume()
{
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
protected void onStart()
{
super.onStart();
mbitMap.setMyLocationEnabled(true);
if(!mLocationClient.isStarted())
mLocationClient.start();
}
protected void onPause()
{
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
protected void onStop()
{
super.onStop();
mbitMap.setMyLocationEnabled(false);
//if(!mLocationClient.isStarted())
mLocationClient.start();
}
protected void onDestroy()
{
super.onDestroy();
mMapView.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.map_common:
mbitMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
break;
case R.id.map_site:
mbitMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
break;
case R.id.map_traffic:
if(mbitMap.isTrafficEnabled())
{
mbitMap.setTrafficEnabled(false);
item.setTitle("实时交通off");
}
else
{
mbitMap.setTrafficEnabled(true);
item.setTitle("实时交通on");
}
break;
case R.id.map_location:
centerToMyLocation();
break;
}
return super.onOptionsItemSelected(item);
}
//定位我的位置
private void centerToMyLocation()
{
LatLng latLng = new LatLng(mLatitude,mLongtitude);
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
mbitMap.animateMapStatus(msu);
}
private class MyLocationListener implements BDLocationListener
{
public void onReceiveLocation(BDLocation location)
{
MyLocationData data = new MyLocationData.Builder()//
.accuracy(location.getRadius())//
.latitude(location.getLatitude())// //为了格式好看
.longitude(location.getLongitude()).build();
mbitMap.setMyLocationData(data);
//MyLocationConfiguration config = new MyLocationConfiguration(LocationMode., arg1, arg2)
mLatitude = location.getLatitude();//更新最新的经纬度
mLongtitude = location.getLongitude();
if(isFirstIn)
{
LatLng latLng = new LatLng(location.getLatitude(),location.getLongitude());
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
mbitMap.animateMapStatus(msu);
isFirstIn=false;
Toast.makeText(context, location.getAddrStr(),Toast.LENGTH_SHORT).show();
}
}
}
}
- 安卓实现百度地图调用详细解释
- 安卓实现百度地图调用详细解释
- 安卓调用百度地图实现
- 安卓通过经纬度,实现intent调用百度,高德,Google地图客户端实现驾车导航功能
- 安卓实现在百度地图上播放历史轨迹
- 安卓实现在百度地图上播放历史轨迹
- 安卓百度地图开发
- 安卓之地图----百度地图实现及简单的定位
- php实现调用百度地图功能
- 调用百度地图api实现标记城市
- js调用百度地图api实现定位
- 百度地图-实时路况调用实现
- php实现调用百度地图功能
- Android 实现百度地图API调用
- 调用百度地图实现定位功能
- php 实现百度地图(很详细出来的地图)
- 百度地图安卓搜索服务开发
- 百度安卓地图学习(一)
- XML中的大于等于号,如何处理
- 浏览器兼容性测试工具
- 教你上传本地代码到github
- Cocoapods 使用 遇到的问题
- Apache Maven 入门篇(下)
- 安卓实现百度地图调用详细解释
- signal(SIGCHLD, SIG_IGN)
- 正则表达式30分钟入门教程
- javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites
- 由jtable浅谈vector<vector<Object>>的用法(转自a718515028的专栏)
- 今天做了一个小小的项目 总结一下。
- .aspx 如何转.html
- 为GitHub创建一个新分支上传代码
- Mac地址、IP、子网掩码、网关、DNS