如何把百度地图应用到安卓中



现如今,地图类软件在生活中是不可或缺的,给我们出行带来了极大的便利。那么就让我们来看看怎样实现把百度地图导入到我们的app中吧!



1.申请密钥

http://developer.baidu.com/map/index.php?title=androidsdk


  • 进入网页,到达当前位置:Android动图SDK。这一页需要登陆,如果没用账号的话需要注册。
  • 找到获取密钥这一栏,点击进入LBS开放平台。点击创建应用按钮,会出现这样一个对话框
应用名称随便填,应用类型选择for mobile。
安全码相当重要,由  数字签名+“;”+包名。
数字签名的获取方法:如果使用eclipse,打开eclipse--->打开Window-->打开preferences-->点击Android--->打开Build
我们所需要的数字签名就是SHA1的数字签名。
然后复制下来按上面的格式填写就ok了,包名当然是你需要导入地图的app的包名。
  • 点击确认,可以看见应用创建成功。复制访问应用的ak(API KEY)
  • 再次进入百度地图sdk的网站,点击相关下载-->点击全部下载-->选择需要的功能-->下载开发包和示例代码。
  • 完成下载后

进入http://developer.baidu.com/map/index.php?title=androidsdk/guide/hellobaidumap

按照该网页提供的步骤进行就OK了!~


显示地图的布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
<com.baidu.mapapi.map.MapView
    android:id="@+id/id_bmapView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true" />

</RelativeLayout>


导入地图的参考代码
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.Toast;

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.MyLocationData;
import com.baidu.mapapi.model.LatLng;

public class MainActivity extends Activity {
	private MapView mMapview;
	private BaiduMap mbaidumap;
	private Context  context;
	
	//定位
	private LocationClient mLocationclient;
	private MyLocationListener mLocationlistener;
	private boolean isFirstIn=true;
	private double  mLatitude;
	private double  mLongtitude;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		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() {
		mLocationclient=new LocationClient(this);
		mLocationlistener=new MyLocationListener();
		mLocationclient.registerLocationListener(mLocationlistener);//注册
	
		LocationClientOption option = new LocationClientOption();
		option.setCoorType("bd09ll");
		option.setIsNeedAddress(true);//返回一下当前位置
		option.setOpenGps(true);
		option.setScanSpan(1000);//每秒钟请求一次
		
		mLocationclient.setLocOption(option);
		
	}


	@Override
	protected void onResume() {
		
		super.onResume();
		   //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
        mMapview.onResume();  
	}
	
	@Override
	protected void onStart() {
		super.onStart();
		
		//开启定位
		mbaidumap.setMyLocationEnabled(true);
		if(!mLocationclient.isStarted())
		mLocationclient.start();
	}
	@Override
	protected void onStop() {
		super.onStop();
		
		//停止定位
		mbaidumap.setMyLocationEnabled(false);
		mLocationclient.stop();
	}
	@Override
	protected void onPause() {
		super.onPause();
		 //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
        mMapview.onPause();  
	}
	@Override
	protected void onDestroy() {
		super.onDestroy();
		//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
        mMapview.onDestroy();  
	}
	
	private void initView() {
		mMapview=(MapView)findViewById(R.id.id_bmapView);
		mbaidumap=mMapview.getMap();
		MapStatusUpdate mus=MapStatusUpdateFactory.zoomTo(15.0f);
		mbaidumap.setMapStatus(mus);
	}

	@Override
	public 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;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.id_map_common:
			mbaidumap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
			break;
		case R.id.id_map_site:
			mbaidumap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
			break;
		case R.id.id_map_traffic:
			if(mbaidumap.isTrafficEnabled())
			{
				mbaidumap.setTrafficEnabled(false);
				item.setTitle("实时交通(off)");
			}
			else
			{
				mbaidumap.setTrafficEnabled(true);
				item.setTitle("实时交通on");
			}
			break;
		case R.id.id_map_location:
			LatLng latlng =new LatLng(mLatitude,mLongtitude);
			MapStatusUpdate msu=MapStatusUpdateFactory.newLatLng(latlng);
			mbaidumap.animateMapStatus(msu);
			break;

		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}
	
	private class MyLocationListener implements BDLocationListener
	{

		@Override
		public void onReceiveLocation(BDLocation location) {
			
			MyLocationData date =new MyLocationData.Builder()//
			.accuracy(location.getRadius())//
			.latitude(location.getLatitude())//
			.longitude(location.getLongitude()).build();
			
			mbaidumap.setMyLocationData(date);
			
			//MyLocationConfiguration config=new MyL
			//ocationConfiguration(LocationMode., arg1, arg2)
		
			mLatitude=location.getLatitude();
			mLongtitude=location.getLongitude();
			
			if(isFirstIn)
			{
				LatLng latlng =new LatLng(location.getLatitude(),location.getLongitude() );
				MapStatusUpdate msu=MapStatusUpdateFactory.newLatLng(latlng);
				mbaidumap.animateMapStatus(msu);
				isFirstIn=false;
				
				Toast.makeText(context, location.getAddrStr(), Toast.LENGTH_LONG).show();
			}
			
		}
		
	}
	
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将百度地图 SDK 集成至 Android Studio ,需要进行以下步骤: 1. 在百度地图开放平台注册开发者账号,并创建应用,获取相应的 API Key。 2. 下载百度地图 SDK,解压后将其的 libs 文件夹复制到项目的 app 目录下。 3. 在 app 的 build.gradle 文件添加以下依赖: ``` implementation files('libs/baidu-map-sdk-5.3.0.jar') implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support:support-v4:27.1.1' ``` 4. 在 AndroidManifest.xml 文件添加以下权限: ``` <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> ``` 5. 在 AndroidManifest.xml 文件添加以下配置: ``` <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="您的API Key"/> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service> ``` 6. 在布局文件添加一个 MapView 控件,用于显示地图。 7. 在代码初始化百度地图 SDK,并在 MapView 控件显示地图: ``` // 初始化百度地图 SDK SDKInitializer.initialize(getApplicationContext()); // 获取地图控件引用 MapView mapView = findViewById(R.id.bmapView); // 获取地图对象 BaiduMap baiduMap = mapView.getMap(); // 显示地图 MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLng(new LatLng(39.914935, 116.403694)); baiduMap.setMapStatus(mapStatusUpdate); ``` 注意:调用百度地图 API 需要在网络环境良好的情况下进行,否则可能会出现无法访问 API 的情况。此外,使用百度地图 API 时需要遵守相关的服务条款和隐私政策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值