您的位置:首页 > 其它

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

2015-09-28 18:16 281 查看

现如今,地图类软件在生活中是不可或缺的,给我们出行带来了极大的便利。那么就让我们来看看怎样实现把百度地图导入到我们的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();
}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: