編輯:關於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);
}
}
成果如圖,同樣雙擊放大:

完成!
跟我學Android之十三 SQLite數據庫操作
本章內容 第1節 SQLite數據庫概述 第2節 SQLite建庫建表 第3節管理數據庫連接 第4節 操作數據庫數據 第5節 數據綁定本章目標 掌握SQLite數據的基本
scrollTo + Scroller + ViewDragHelper
看標題就知道這篇文章講的主要是view滑動的相關內容。 ScrollTo && ScrollBy 先看下源碼: public void sc
android裡shape與漸變色學習
先說下shape資源文件裡主要包括:邊角(corners),漸變色(gradrent),大小(size),邊距(padding) ,填充(solid),掃邊(stoke)
Android 啟動頁面引導頁面登陸注冊主頁通用框架
寫這個不是因為這個很難,而是發現特麼每次新寫一個項目都要寫這些東西,不如就把他們拿出來,以後可以省下不少時間。1:啟動頁面 一個動畫 然後進入app2:第一次打開的引導頁