基于Fragment的百度Map也很简单
直接看例子吧:
AndroidManifest.xml的配置:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.testbaidu_v_3_1" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="21" /> 10 11 <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 12 <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 13 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> 14 <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> 15 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 16 <uses-permission android:name="android.permission.INTERNET" /> 17 <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> 18 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 19 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 20 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 21 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 22 <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 23 <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 24 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 25 26 <application 27 android:allowBackup="true" 28 android:icon="@drawable/ic_launcher" 29 android:label="@string/app_name" 30 android:theme="@style/AppTheme" > 31 <meta-data 32 android:name="com.baidu.lbsapi.API_KEY" 33 android:value="your key" /> 34 35 <activity 36 android:name=".MapFragment" 37 android:label="@string/app_name" > 38 <intent-filter> 39 <action android:name="android.intent.action.MAIN" /> 40 41 <category android:name="android.intent.category.LAUNCHER" /> 42 </intent-filter> 43 </activity> 44 </application> 45 46 </manifest>
MapFragment类:
1 package com.example.testbaidu_v_3_1; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.content.IntentFilter; 7 import android.os.Bundle; 8 import android.support.v4.app.FragmentActivity; 9 import android.support.v4.app.FragmentManager; 10 import android.widget.Toast; 11 12 import com.baidu.mapapi.SDKInitializer; 13 import com.baidu.mapapi.map.BaiduMapOptions; 14 import com.baidu.mapapi.map.MapStatus; 15 import com.baidu.mapapi.map.SupportMapFragment; 16 17 public class MapFragment extends FragmentActivity{ 18 19 private SupportMapFragment map; 20 private SDKReceiver mReceiver; 21 22 @Override 23 public void onCreate(Bundle savedInstanceState) { 24 // 在使用SDK各组件之前初始化context信息,传入ApplicationContext 25 // 注意该方法要再setContentView方法之前实现 26 SDKInitializer.initialize(getApplicationContext()); 27 super.onCreate(savedInstanceState); 28 setContentView(R.layout.activity_fragment); 29 MapStatus ms = new MapStatus.Builder().overlook(-20).zoom(15).build(); 30 //overlook 设置地图俯仰角 31 //zoom 设置地图缩放级别 32 BaiduMapOptions bo = new BaiduMapOptions().mapStatus(ms) 33 .compassEnabled(false).zoomControlsEnabled(false); 34 //compassEnabled 设置是否允许指南针,默认允许 35 //zoomControlsEnabled 设置是否显示缩放控件 36 map = SupportMapFragment.newInstance(bo); 37 FragmentManager manager = getSupportFragmentManager(); 38 manager.beginTransaction().add(R.id.map, map, "map_fragment").commit(); 39 40 IntentFilter iFilter = new IntentFilter(); 41 iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR); 42 iFilter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR); 43 mReceiver = new SDKReceiver(); 44 registerReceiver(mReceiver, iFilter); 45 } 46 47 protected void onDestroy() { 48 super.onDestroy(); 49 // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 50 unregisterReceiver(mReceiver); 51 } 52 53 public class SDKReceiver extends BroadcastReceiver { 54 public void onReceive(Context context, Intent intent) { 55 String s = intent.getAction(); 56 if (s.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) { 57 Toast.makeText(MapFragment.this, 58 "key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置", 59 Toast.LENGTH_SHORT).show(); 60 ; 61 } else if (s 62 .equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) { 63 Toast.makeText(MapFragment.this, "网络出错", Toast.LENGTH_SHORT) 64 .show(); 65 } 66 } 67 } 68 }
activity_fragment.xml文件:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical" > 6 7 <FrameLayout 8 android:id="@+id/map" 9 android:layout_width="match_parent" 10 android:layout_height="match_parent" /> 11 12 </LinearLayout>
运行结果截图: