編輯:關於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節 SQLite數據庫概述 第2節 SQLite建庫建表 第3節管理數據庫連接 第4節 操作數據庫數據 第5節 數據綁定本章目標 掌握SQLite數據的基本
看標題就知道這篇文章講的主要是view滑動的相關內容。 ScrollTo && ScrollBy 先看下源碼: public void sc
先說下shape資源文件裡主要包括:邊角(corners),漸變色(gradrent),大小(size),邊距(padding) ,填充(solid),掃邊(stoke)
寫這個不是因為這個很難,而是發現特麼每次新寫一個項目都要寫這些東西,不如就把他們拿出來,以後可以省下不少時間。1:啟動頁面 一個動畫 然後進入app2:第一次打開的引導頁