android平台某个旅游景点导航地图的开发是完全通过类自己绘制还是通过百度地图api的基础上绘制呢
通过自己绘制。
如何实现Android客户端旅游景点地图APP应用
以百度api为基础
复制
要定义的变量
private BaiMap mBaiMap;
private MapView mMapView;
private LocationClient mLocationClient;
private boolean isFirstIn = true;
初始化
mMapView= (MapView) findViewById(R.id.bmapView);
mBaiMap = mMapView.getMap();
各部分实现的功能
1.
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
把地图的生命周期和activity的生命周期绑定起来
@Override
protected void onStart() {
super.onStart();
mBaiMap.setMyLocationEnabled(true);
if(!mLocationClient.isStarted())
mLocationClient.start();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.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();
}
实现option点击转换地图模式
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 1, 0, 普通地图);
menu.add(0, 2, 0, 卫星地图);
menu.add(0, 3, 0, 实时交通(off));
return super.onCreateOptionsMenu(menu);
}
设置option的点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
//普通地图
mBaiMap.setMapType(BaiMap.MAP_TYPE_NORMAL);
break;
case 2:
//卫星地图
mBaiMap.setMapType(BaiMap.MAP_TYPE_SATELLITE);
break;
case 3:
if(mBaiMap.isTrafficEnabled()){
mBaiMap.setTrafficEnabled(false);
item.setTitle(实时交通(off));
}else{
mBaiMap.setTrafficEnabled(true);
item.setTitle(实时交通(on));
}
break;
}
return super.onOptionsItemSelected(item);
}
在地图上添加标识物
//定义Maker坐标点
LatLng point = new LatLng(39.963175, 116.400244);
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地图上添加Marker,并显示
mBaiMap.addOverlay(option);
设置gps定位
要用到的类
LocationClient
BDLocationListener
(1)
MyLocationListener myLocationListener = new MyLocationListener();
mLocationClient = new LocationClient(getApplicationContext()); //声明LocationClient类
mLocationClient.registerLocationListener(myLocationListener); //注册监听函数
(2)利用LocationClientOption 设置定位的属性
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);//设置定位模式
option.setCoorType(bd09ll);//返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(1000);//设置发起定位请求的间隔时间为5000ms
option.setIsNeedAddress(true);//返回的定位结果包含地址信息
option.setNeedDeviceDirect(true);//返回的定位结果包含手机机头的方向
mLocationClient.setLocOption(option);
(3)监听器的实现
private class MyLocationListener implements BDLocationListener{
@Override
public void onReceiveLocation(BDLocation location) {
// TODO Auto-generated method stub
MyLocationData data = new MyLocationData.Builder()
//设置经纬度
.accuracy(location.getRadius())
.latitude(location.getLatitude())
.longitude(location.getLongitude())
.build();
mBaiMap.setMyLocationData(data);
//判断第一次进入,定位到目前所在位置
if(isFirstIn){
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MapStatusUpdate msu =MapStatusUpdateFactory.newLatLng(latLng);
mBaiMap.animateMapStatus(msu);
Toast.makeText(getApplicationContext(), location.getAddrStr(),3000).show();
isFirstIn = false;
}
}
}
所要加的权限
所要在application声明的
安卓有什么软件可以实现自己的一张照片合成到一些旅游景点吗?
APP是存放所有系统应用程序的文件夹,删掉了不黑屏就不正常了。
刷系统吧,或者找个方法把rom恢复一下。