最近在做的項目裡要用到地圖,看了一下高德地圖的API,最後決定就用高德地圖,和平時不同,這次地圖是要嵌在Fragment了,研究了一下網上的代碼,最後實現了。下面說一下實現2D地圖的方法。
1.先去高德地圖官網註冊Key,地址是http://lbs.amap.com/api/android-sdk/summary/;
2.根據說明下載所需的sdk.
3.配置工程
(1)添加key
在工程的“ AndroidManifest.xml ”檔案如下代碼中添加Key.
(1)添加許可權
<pre><code><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /></code></pre>
4.布局檔案
<com.amap.api.maps2d.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent" />
5.實現
public class FragmentMap extends Fragment{ private static FragmentMap fragment = null; @ViewInject(R.id.map) private MapView mapView; private AMap aMap; private View mapLayout; public static Fragment newInstance() { if (fragment == null) { synchronized (FragmentMap.class) { if (fragment == null) { fragment = new FragmentMap(); } } } return fragment; } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (mapLayout == null) { mapLayout = inflater.inflate(R.layout.fragment_map, null); ViewUtils.inject(this, mapLayout); mapView.onCreate(savedInstanceState);//必須寫 if (aMap == null) { aMap = mapView.getMap(); } else { if (mapLayout.getParent() != null) { ((ViewGroup) mapLayout.getParent()).removeView(mapLayout); } } return mapLayout; } @Override public void onResume() { super.onResume(); mapView.onResume(); } /** * 方法必須重寫 * map的生命週期方法 */ @Override public void onPause() { super.onPause(); mapView.onPause(); } /** * 方法必須重寫 * map的生命週期方法 */ @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必須重寫 * map的生命週期方法 */ @Override public void onDestroy() { super.onDestroy(); mapView.onDestroy(); } }
效果圖如下: