百度地图的基础和定位功能_第1页
百度地图的基础和定位功能_第2页
百度地图的基础和定位功能_第3页
百度地图的基础和定位功能_第4页
百度地图的基础和定位功能_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、activity_main.xml<LinearLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical"> <TextView android:layout_gravity="center

2、_horizontal" android:id="+id/tv" android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="列表界面" /> <LinearLayout android:layout_weight="8" android:layout_width="match_par

3、ent" android:layout_height="0dp" android:id="+id/ll" ></LinearLayout> <LinearLayout android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp" > <Button android:layout_weight="1" android

4、:id="+id/btn_jichu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="string/Base_map" /> <Button android:layout_weight="1" android:id="+id/btn_yonghu" android:layout_width="wrap_content"

5、 android:layout_height="wrap_content" android:text="string/Location_User" /> </LinearLayout></LinearLayout>fragment1.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" android:layout_width="match_parent&quo

6、t; android:layout_height="match_parent" android:orientation="vertical" > <com.baidu.mapapi.map.MapView android:id="+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /><

7、/LinearLayout>fragment2.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" > <com.baidu.mapapi.map.MapView android:id="+id/bmapView"

8、 android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:

9、layout_marginTop="80dip" android:background="#D000" android:minWidth="100dip" android:orientation="vertical" android:padding="2dp" > <RadioGroup android:id="+id/radioGroup" android:layout_width="wrap_content" android:layout_

10、height="wrap_content" android:contentDescription="定位icon" > <RadioButton android:id="+id/defaulticon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="默认图标" > &

11、lt;/RadioButton> <RadioButton android:id="+id/customicon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定义图标" > </RadioButton> </RadioGroup> </LinearLayout> <Button android:id="+id/bu

12、tton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="25dp" android:layout_marginTop="10dip" /></Re

13、lativeLayout>/主程序MainActivitypackage com.example.zzhouzilong20151221;import com.example.fragments.MyFragment1;import com.example.fragments.MyFragment2;import android.R.color;import android.graphics.Color;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.suppor

14、t.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.LinearLayout;public class MainActivity extends FragmentActivity implements OnClickListenerprivate LinearLayo

15、ut ll;private Button btn1,btn2;private FragmentManager fm;MyFragment1 mf1;MyFragment2 mf2;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();public void init()/得到事务管理器fm=getSupportFragmentManager();/找控件ll=(Linea

16、rLayout) findViewById(R.id.ll);btn1=(Button) findViewById(R.id.btn_jichu);btn2=(Button) findViewById(R.id.btn_yonghu);FragmentTransaction tran = fm.beginTransaction();mf1=new MyFragment1();mf2=new MyFragment2();/添加fragment页tran.add(R.id.ll, mf1);tran.add(R.id.ll, mf2);/替换tran.replace(R.id.ll, mf1);m

17、it();/提交/设置颜色btn1.setBackgroundColor(Color.BLUE);btn1.setOnClickListener(this);btn2.setOnClickListener(this);Overridepublic void onClick(View v) / TODO Auto-generated method stubFragmentTransaction tran1 = fm.beginTransaction();switch (v.getId() case R.id.btn_jichu:tran1.replace(R.id.ll,mf1);btn1.se

18、tBackgroundColor(Color.BLUE);btn2.setBackgroundColor(color.background_dark);break;case R.id.btn_yonghu:tran1.replace(R.id.ll,mf2);btn2.setBackgroundColor(Color.BLUE);btn1.setBackgroundColor(color.background_dark);break;default:break;mit();MyFragment1package com.example.fragments;import com.baidu.map

19、api.SDKInitializer;import com.baidu.mapapi.map.MapView;import com.example.zzhouzilong20151221.R;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class MyFragment1 extends Fragment MapView

20、mMapView = null;Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) / TODO Auto-generated method stub/ 在使用SDK各组件之前初始化context信息,传入ApplicationContext/ 注意该方法要再setContentView方法之前实现SDKInitializer.initialize(getActivity().getApplicationContext();View vi

21、ew = inflater.inflate(R.layout.fragment1, null);/ 获取地图控件引用mMapView = (MapView) view.findViewById(R.id.bmapView);return view;Overridepublic void onDestroy() super.onDestroy();/ 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();Overridepublic void onResume() super.onResume();/

22、 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();Overridepublic void onPause() super.onPause();/ 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();MyFragment2.javapackage com.example.fragments;import com.baidu.location.BDLocation;import com.baidu.locati

23、on.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatusUpdate;import com.b

24、aidu.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.map.MyLocationConfiguration.LocationMode;import com.baidu.mapapi.model.LatLng;import com.example.zzhouzilo

25、ng20151221.R;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.RadioGroup;import android.widget.RadioGro

26、up.OnCheckedChangeListener;public class MyFragment2 extends Fragment / 定位相关LocationClient mLocClient;public MyLocationListenner myListener = new MyLocationListenner();private LocationMode mCurrentMode;BitmapDescriptor mCurrentMarker;MapView mMapView;BaiduMap mBaiduMap;/ UI相关OnCheckedChangeListener r

27、adioButtonListener;Button requestLocButton;boolean isFirstLoc = true;/ 是否首次定位private View view;Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) view = inflater.inflate(R.layout.fragment2, null);init();/ 地图定位设置return view;private void init() / T

28、ODO Auto-generated method stubrequestLocButton = (Button) view.findViewById(R.id.button1);/ 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态mCurrentMode = LocationMode.NORMAL;requestLocButton.setText("普通");OnClickListener btnClickListener = new OnClickListener() public void onClick(View v) switch (mC

29、urrentMode) case NORMAL:requestLocButton.setText("跟随");mCurrentMode = LocationMode.FOLLOWING;mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);break;case COMPASS:requestLocButton.setText("普通");mCurrentMode = LocationMode.NORMAL;m

30、BaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);break;case FOLLOWING:requestLocButton.setText("罗盘");mCurrentMode = LocationMode.COMPASS;mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);b

31、reak;default:break;requestLocButton.setOnClickListener(btnClickListener);RadioGroup group = (RadioGroup) view.findViewById(R.id.radioGroup);radioButtonListener = new OnCheckedChangeListener() Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) if (checkedId = R.id.defaulticon) / 传入

32、null则,恢复默认图标mCurrentMarker = null;/* * mode - 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态 * enableDirection - 是否允许显示方向信息 customMarker * -设置用户自定义定位图标,可以为 null */mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, null);if (checkedId = R.id.customicon) / 修改为自定义markermCurrent

33、Marker = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);group.setOnCheckedChangeListener(radioButtonListener);/ 地图初始化mMapView = (MapView) view.findViewById(R.id.bmapView);mBaiduMap = mM

34、apView.getMap();/ 获取地图控制器/ 开启定位图层mBaiduMap.setMyLocationEnabled(true);/ 定位初始化mLocClient = new LocationClient(getActivity();mLocClient.registerLocationListener(myListener);LocationClientOption option = new LocationClientOption();option.setOpenGps(true);/ 打开gpsoption.setCoorType("bd09ll"); /

35、 设置坐标类型option.setScanSpan(1000);mLocClient.setLocOption(option);mLocClient.start();/* * 定位SDK监听函数 */public class MyLocationListenner implements BDLocationListener Overridepublic void onReceiveLocation(BDLocation location) / map view 销毁后不在处理新接收的位置if (location = null | mMapView = null) return;MyLocati

36、onData locData = new MyLocationData.Builder().accuracy(location.getRadius()/ 此处设置开发者获取到的方向信息,顺时针0-360.direction(100).latitude(location.getLatitude().longitude(location.getLongitude().build();mBaiduMap.setMyLocationData(locData);if (isFirstLoc) isFirstLoc = false;LatLng ll = new LatLng(location.getLa

37、titude(),location.getLongitude();MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);mBaiduMap.animateMapStatus(u);public void onReceivePoi(BDLocation poiLocation) Overridepublic void onPause() mMapView.onPause();super.onPause();Overridepublic void onResume() mMapView.onResume();super.onResume(

38、);Overridepublic void onDestroy() / 退出时销毁定位mLocClient.stop();/ 关闭定位图层mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;super.onDestroy();AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android=" package="com.exa

39、mple.zzhouzilong20151221" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <use

40、s-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.perm

41、ission.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" /> &l

42、t;uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!- 这个权限用于进行网络定位 -> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > </uses-permission> <!- 这个权限用于访问GPS定位 -> <uses-permission android:name="android.

43、permission.ACCESS_FINE_LOCATION" > </uses-permission> <!- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" > </uses-permission> <!- 获取运营商信息,用于支持提供运营商信息相关的接口 -> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <!- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" > </uses-permission> <!- 用于读取手机当前的状态 -> <

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论