編輯:關於Android編程
實現將一組GPS模塊獲取的經緯度數據在百度地圖上繪制軌跡
1.將經緯度轉換成百度地圖坐標
/**
* 標准的GPS經緯度坐標直接在地圖上繪制會有偏移,這是測繪局和地圖商設置的加密,要轉換成百度地圖坐標
*
* @return 百度地圖坐標
*/
public GeoPoint gpsToBaidu(String data) {//data格式 nmea標准數據 ddmm.mmmmm,ddmm.mmmm 如3030.90909,11449.1234
String[] p = data.split(",");
int lat = (int) (((int) (Float.valueOf(p[0]) / 100) + (100 * (Float//將ddmm.mmmm格式轉成dd.ddddd
.valueOf(p[0]) / 100.0 - (int) (Float.valueOf(p[0]) / 100)) / 60.0)) * 1E6);
int lon = (int) (((int) (Float.valueOf(p[1]) / 100) + (100 * (Float
.valueOf(p[1]) / 100.0 - (int) (Float.valueOf(p[1]) / 100)) / 60.0)) * 1E6);
GeoPoint pt = new GeoPoint(lat, lon);
return CoordinateConvert.fromWgs84ToBaidu(pt);//轉成百度坐標
}
/**
* 繪制點線
*
*/
public void addCustomElementsDemo(String[] data) {
GraphicsOverlay graphicsOverlay = new GraphicsOverlay(mMapView);
mMapView.getOverlays().add(graphicsOverlay);
// 添加折線
graphicsOverlay.setData(drawLine(data));//軌跡
// 添加點
graphicsOverlay.setData(drawPoint(data[0]));//起點
graphicsOverlay.setData(drawPoint(data[count - 1]));//終點
// 執行地圖刷新使生效
mMapView.refresh();
}
/**
* 繪制單點,該點狀態不隨地圖狀態變化而變化
*
* @return 點對象
*/
public Graphic drawPoint(String data) {
GeoPoint pt1 = gpsToBaidu(data);
// 構建點
Geometry pointGeometry = new Geometry();
// 設置坐標
pointGeometry.setPoint(pt1, 10);
// 設定樣式
Symbol pointSymbol = new Symbol();
Symbol.Color pointColor = pointSymbol.new Color();
pointColor.red = 0;
pointColor.green = 126;
pointColor.blue = 255;
pointColor.alpha = 255;
pointSymbol.setPointSymbol(pointColor);
// 生成Graphic對象
Graphic pointGraphic = new Graphic(pointGeometry, pointSymbol);
return pointGraphic;
}
/**
* 繪制折線,該折線狀態隨地圖狀態變化
*
* @return 折線對象
*/
public Graphic drawLine(String[] data) {
// 構建線
Geometry lineGeometry = new Geometry();
// 設定折線點坐標
GeoPoint[] linePoints = new GeoPoint[count];
for (int i = 0; i < count; i++) {
linePoints[i] = gpsToBaidu(data[i]);
}
lineGeometry.setPolyLine(linePoints);
// 設定樣式
Symbol lineSymbol = new Symbol();
Symbol.Color lineColor = lineSymbol.new Color();
lineColor.red = 33;
lineColor.green = 99;
lineColor.blue = 255;
lineColor.alpha = 255;
lineSymbol.setLineSymbol(lineColor, 10);
// 生成Graphic對象
Graphic lineGraphic = new Graphic(lineGeometry, lineSymbol);
return lineGraphic;
}
Android開發自定義View實現數字與圖片無縫切換的2048
最近在學自定義View,無意中看到鴻洋大神以前寫過的2048,看起來很不錯,所以自己在他的基礎上做一個加強版的2048。先看圖: 功能除了正常的2048外,還支
Android sdcard讀寫權限問題之一
博主在剛剛在學習過程中發現了一個關於android往sdcard讀寫的問題, 配置了該配置的提示無讀寫權限。 在AndroidManifest.xml文件中配置清單如下
Android如何防止apk程序被反編譯
作為Android應用開發者,不得不面對一個尴尬的局面,就是自己辛辛苦苦開發的應用可以被別人很輕易的就反編譯出來。Google似乎也發現了這個問題,從SDK
另外兩種Android沉浸式狀態欄實現思路
關於沉浸式狀態欄相信大家都不陌生,IOS系統很早就有,android5.0及以後版本都支持給狀態欄著色,而目前android主流版本還是4.4,網上通用實現4.4(API