任我行二 - 高德地图篇1 - 显示地图

附加高德SDK  apidoc

按照官方文档,将下载下来的doc 附加到IDEA 中。

任我行二 - 高德地图篇1 - 显示地图_第1张图片


记:2d的包可以不使用,3d 的包包含了2d的功能。


将mapview 放在fragment中来显示

官方的示例是将mapview 放在activity中来显示,个人觉得放在fragment中更好。

map_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    <com.amap.api.maps.MapView android:layout_width="match_parent"
                                 android:layout_height="match_parent"
            android:id="@+id/map"/>

</FrameLayout>

再在我们的activity中加fragment。

index_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <fragment class="com.qzz.android.app.iride.fragments.AutoNaviMapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
</LinearLayout>


创建了一个AutoNaviMapFragment用来初始化地图操作。

AutoNaviMapFragment.java

package com.qzz.android.app.iride.fragments;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.qzz.android.app.iride.R;

/**
 * Created by Q on 2015/4/12.
 */
public class AutoNaviMapFragment extends MapFragment {
    private MapView mapView;
    private AMap aMap;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = super.onCreateView(inflater, container, savedInstanceState);
        mapView = (MapView) view.findViewById(R.id.map);
        mapView.onCreate(savedInstanceState);
        init();
        return view;
    }

    /**
     * 初始化 AMap 对象
     */

    private void init() {
        if (aMap == null) {
            aMap = mapView.getMap();
        }
    }



    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mapView.onSaveInstanceState(outState);
    }


    @Override
    public void onResume() {
        super.onResume();
        mapView.onResume();
    }


    @Override
    public void onPause() {
        super.onPause();
        mapView.onPause();
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
    }
}


继承的MapFragment 用来渲染xml文件,只有一句话。

MapFragment.java

public abstract class MapFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
       return inflater.inflate(R.layout.map_layout,container,false);
    }
}

最重要的是要在AndroidManifest.xml中加入key和权限。 key申请方式可以在官方网站上看。

加入以下基本权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_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" />

如此几步,就可以在fragment中显示地图了。上个效果图。

任我行二 - 高德地图篇1 - 显示地图_第2张图片


你可能感兴趣的:(任我行二 - 高德地图篇1 - 显示地图)