Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 移動應用地圖工具包WhirlyGlobe-Maply新建android項目

移動應用地圖工具包WhirlyGlobe-Maply新建android項目

編輯:關於Android編程

WhirlyGlobe-Maply是一個基於OpenGL ES、專注移動應用的開源地圖工具包,支持ios和android平台,本文以android平台為例。

環境:windows7 64位,Androidstudio 1.2.2,WhirlyGlobe-Maply(下載地址

打開Androidstudio,新建一個名為“HelloEarth”的項目:
這裡寫圖片描述

選擇SDK
這裡寫圖片描述

選擇空的activity
這裡寫圖片描述

保持默認名稱MainActivity,也可以修改名稱
這裡寫圖片描述
點擊Finish完成。

復制WhirlyGlobeMaply.aar(下載壓縮包app/libs/WhirlyGlobeMaply.aar)到app/libs文件夾下:
這裡寫圖片描述

打開build.gradle(Project:HelloEarth)文件,在allprojects裡面添加如下內容:
這裡寫圖片描述
這裡寫圖片描述

打開build.gradle(Module:app)文件,在dependencies裡面添加以下內容:
這裡寫圖片描述
這裡寫圖片描述

右鍵點擊MainActivity,在項目窗口中選擇一個新的空白的Fragment,命名為HelloGlobeFragment,去掉三個對勾
這裡寫圖片描述
這裡寫圖片描述

打開activity_main.xml,注釋掉原有的HelloWorld文本框,改為以下內容<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">

打開HelloGlobeFragment.java,修改原有的代碼為以下代碼

package com.example.administrator.helloearth;


import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.mousebird.maply.GlobeMapFragment;
import com.mousebird.maply.QuadImageTileLayer;
import com.mousebird.maply.RemoteTileInfo;
import com.mousebird.maply.RemoteTileSource;
import com.mousebird.maply.SphericalMercatorCoordSystem;
import java.io.File;


/**
 * A simple {@link Fragment} subclass.
 */
public class HelloGlobeFragment extends GlobeMapFragment {


//    public HelloGlobeFragment() {
//        // Required empty public constructor
//    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle inState) {
//        TextView textView = new TextView(getActivity());
//        textView.setText(R.string.hello_blank_fragment);
//        return textView;
        super.onCreateView(inflater,container,inState);
        return baseControl.getContentView();
    }

    @Override
    protected MapDisplayType chooseDisplayType(){
        return MapDisplayType.Globe;
    }

    @Override
    protected void controlHasStarted(){
        // 設置瓦片地圖
        String cacheDirName="stamen_watercolor";
        File cacheDir=new File(getActivity().getCacheDir(),cacheDirName);
        cacheDir.mkdir();
        RemoteTileSource remoteTileSource=new RemoteTileSource(new RemoteTileInfo("http://tile.stamen.com/watercolor/","png",0,18));
        remoteTileSource.setCacheDir(cacheDir);
        SphericalMercatorCoordSystem coordSystem=new SphericalMercatorCoordSystem();

        // 當為全球顯示時使用globeControl
        // 當為地圖顯示時使用mapControl
        QuadImageTileLayer baseLayer=new QuadImageTileLayer(globeControl,coordSystem,remoteTileSource);
        baseLayer.setImageDepth(1);
        baseLayer.setSingleLevelLoading(false);
        baseLayer.setUseTargetZoomLevel(false);
        baseLayer.setCoverPoles(true);
        baseLayer.setHandleEdges(true);

        // 添加圖層並確定位置
        globeControl.addLayer(baseLayer);
        globeControl.animatePositionGeo(-3.6704803, 40.5023056, 5, 1.0);

    }
}

成果如圖,可以通過雙擊放大:
這裡寫圖片描述

以上是創建球狀地圖,接下來我們創建二維地圖:

如上述過程選擇一個新的空白的Fragment,命名為HelloMapFragment,修改activity_main.xml內容



    
        
    
        
        
        
        
        
        

    


修改HelloMapFragment.java代碼

package com.example.administrator.helloearth;


import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.mousebird.maply.GlobeMapFragment;
import com.mousebird.maply.QuadImageTileLayer;
import com.mousebird.maply.RemoteTileInfo;
import com.mousebird.maply.RemoteTileSource;
import com.mousebird.maply.SphericalMercatorCoordSystem;
import java.io.File;


/**
 * A simple {@link Fragment} subclass.
 */
public class HelloMapFragment extends GlobeMapFragment {


//    public HelloGlobeFragment() {
//        // Required empty public constructor
//    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle inState) {
//        TextView textView = new TextView(getActivity());
//        textView.setText(R.string.hello_blank_fragment);
//        return textView;
        super.onCreateView(inflater,container,inState);
        return baseControl.getContentView();
    }

    @Override
    protected MapDisplayType chooseDisplayType(){
        return MapDisplayType.Map;
    }

    @Override
    protected void controlHasStarted(){
        // 設置瓦片地圖
        String cacheDirName="stamen_watercolor";
        File cacheDir=new File(getActivity().getCacheDir(),cacheDirName);
        cacheDir.mkdir();
        RemoteTileSource remoteTileSource=new RemoteTileSource(new RemoteTileInfo("http://tile.stamen.com/watercolor/","png",0,18));
        remoteTileSource.setCacheDir(cacheDir);
        SphericalMercatorCoordSystem coordSystem=new SphericalMercatorCoordSystem();

        // 當為全球顯示時使用globeControl
        // 當為地圖顯示時使用mapControl
        QuadImageTileLayer baseLayer=new QuadImageTileLayer(mapControl,coordSystem,remoteTileSource);
        baseLayer.setImageDepth(1);
        baseLayer.setSingleLevelLoading(false);
        baseLayer.setUseTargetZoomLevel(false);
        baseLayer.setCoverPoles(true);
        baseLayer.setHandleEdges(true);

        // 添加圖層並確定位置
        mapControl.addLayer(baseLayer);
        mapControl.animatePositionGeo(103.994067, 30.770697, 5, 1.0);
        mapControl.setAllowRotateGesture(true);
    }
}

成果如圖,同樣雙擊放大:
這裡寫圖片描述

完成!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved