安卓调用百度地图,与在安卓中通过url进行百度地图的跳转进行导航

一、显示地图配置

1、创建并配置工程
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/eclipse //eclipse配置
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/androidstudio //Android Studio配置
2、在AndroidManifest中添加开发密钥、所需权限等信息;(引自百度地图api官方文档)
在application中添加开发密钥

 <application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发者 key" />  
</application>

添加所需权限(注意: 权限应添加在 appliction 之外,如添加到appliction 内部,会导致无法访问网络,不显示地图。)

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.INTERNET"/> 
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
//读取设备硬件信息,统计数据
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> 
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
//获取统计数据
<uses-permission android:name="android.permission.GET_TASKS" /> 
//鉴权所需该权限获取进程列表
<uses-permission android:name="android.permission.CAMERA" />  
//使用步行AR导航,配置Camera权限

3、在布局xml文件中添加地图控件

<com.baidu.mapapi.map.TextureMapView
       android:id="@+id/bmapView"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_weight="7.21"
       android:clickable="true" >
   </com.baidu.mapapi.map.TextureMapView>

…注 关于安卓项目安全码获取
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key
跟着步骤一步一步做就好 ,包名就填项目中要使用百度地图的类的包名

二显示地图

显示地图的全部代码
-----------------xml中的代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="#f8f8ff"
   android:orientation="vertical" >

   <com.baidu.mapapi.map.TextureMapView
       android:id="@+id/RegionalCoordinatesbRegionMap"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:clickable="true" >
   </com.baidu.mapapi.map.TextureMapView>

</LinearLayout>

class类中的代码,其中包含多位置标点 点击标点显示提示文本框并在点击文本框时执行对应的点击事件

public class RegionalCoordinates extends Activity{
	
	 private BaiduMap baiduMap;
	private TextureMapView mMapView;
	private MapStatusUpdate msu ;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.regional_coordinates);
		mMapView = (TextureMapView) findViewById(R.id.RegionalCoordinatesbRegionMap);
		init();
	}
	private void init() {
		// TODO Auto-generated method stub
    	 baiduMap = mMapView.getMap();
         baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
         baiduMap.setTrafficEnabled(true);
//         设置初始加载位置
          msu = MapStatusUpdateFactory.newLatLngZoom(new   LatLng(24.800427,118.599943),13);
         baiduMap.setMapStatus(msu);
         List<OverlayOptions> options = new ArrayList<OverlayOptions>();
         for (Map<String, Object> map  : DatasStatistics.getRegionMap()) {
			Map<String, Object> obj= (Map<String, Object>) map.get("datastatistics");
        	//构建Marker图标
			BitmapDescriptor bitmap;
			//用来构造InfoWindow
			
        	 if(obj==null||(Double)obj.get("blockagedegree")>20){
        		 bitmap = BitmapDescriptorFactory
                         .fromResource(R.drawable.exception);
        	 }else{
        		 bitmap = BitmapDescriptorFactory
                         .fromResource(R.drawable.yes);
        	 }
        	//定义Maker坐标点
        	 LatLng point1 = new LatLng((Double) map.get("latitude"), (Double) map.get("longitude"));
             //构建MarkerOption,用于在地图上添加Marker
             OverlayOptions option1 = new MarkerOptions()
                     .position(point1)
                     .icon(bitmap);
             options.add(option1);
 		}
         baiduMap.addOverlays(options);
         //获取地图标记点击事件
         baiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
        	 //加载标点上方文本点击事件
        	 InfoWindow.OnInfoWindowClickListener listener = new InfoWindow.OnInfoWindowClickListener() {
         	    @Override
         	    public void onInfoWindowClick() {
         	    	Intent i = new Intent(RegionalCoordinates.this, SingleDetails.class);
    				startActivity(i);
    				overridePendingTransition(R.anim.fade_out,R.anim.fade_in);
         	    }
         	};
         	//加载标点点击事件
			@Override
			public boolean onMarkerClick(Marker mak) {
				//设置文本标题
				BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.tips); 
				LatLng latLng =mak.getPosition();
				//设置参数为了得到详情利用经纬度
				DatasStatistics.setLatLng(latLng);
				//传值显示
				InfoWindow mInfoWindow = new InfoWindow(bitmap, latLng, -30, listener);
	             baiduMap.showInfoWindow(mInfoWindow);
				return false;
			}
		});
         //在地图上添加Marker,并显示
	}

	@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();
    }
    @Override
    public void onBackPressed() {
    	Intent i = new Intent(RegionalCoordinates.this, TableDetails.class);
		startActivity(i);
		overridePendingTransition(R.anim.fade_out,R.anim.fade_in);
    }
    private long logOut =0;
    private long lastClickTime=0;
}

最终显示效果
安卓调用百度地图,与在安卓中通过url进行百度地图的跳转进行导航_第1张图片
,利用经纬度对通过url跳转百度地图

button.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				Uri uri = Uri.parse("http://api.map.baidu.com/geocoder?location="+
						DatasStatistics.getLatLng().latitude+","+DatasStatistics.getLatLng().longitude+"&coord_type=bd09ll&output=html&src=webapp.baidu.openAPIdemo");

				Intent intent = new Intent(Intent.ACTION_VIEW, uri);

				startActivity(intent);
			}
		});

你可能感兴趣的:(安卓)