Fengmap Android SDK

Hello Fengmap 介绍最简单的显示Fengmap地图的Andriod应用。

添加密钥(Key)

在application中添加开发密钥:

<application>
    <meta-data android:name="com.fengmap.mapapi.appkey" android:value="开发者 key" />
添加所需权限

如果FMMapSDK使用默认初始化FMMapSDK.init(),不需要读写权限,如果自定义初始化缓存目录FMMapSDK.init(this,path),需要添加读写权限,添加所需权限,示例如下:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
// 自定义缓存目录添加下面两个
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在布局xml文件中添加地图控件

在布局xml文件中添加地图控件:

<com.fengmap.android.map.FMMapView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mapview"/>
初始化 SDK

在应用程序创建时初始化 SDK引用的Context 全局变量,注意这个MainApplication需要在AndroidManifest.xml里注册:

public class MainApplication extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        //初始化SDK
        FMMapSDK.init(this);
        // 自定义缓存目录,需要申请读写权限
        // FMMapSDK.init(this,path);
    }
}
管理地图

地图销毁释放底层资源,注意:开发者不能在Activity的onDestory 方法里去销毁地图,原因是底层资源的销毁是异步操作,需要在GL线程里面处理,也就是销毁地图前必须保证GL线程活着,而onDestroy回调执行时并不能保证这一点,大多数情况是此时GL线程已经销毁,底层GLView释放失败,下次再打开地图会出现异常。

public class MainActivity extends Activity {
    FMMap mFMMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FMMapView mapView = (FMMapView) findViewById(R.id.mapview);
        mFMMap = mapView.getFMMap();       //获取地图操作对象
        String bid = "10347";             //地图id
        mFMMap.openMapById(bid, true);          //打开地图
    }

    @Override
    public void onBackPressed() {
        if (mFMMap != null) {
            mFMMap.onDestroy();
        }
        super.onBackPressed();
    }
}