Ⅰ android手機地圖畫移動軌跡的代碼
package com.life.hua.activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.graphics.Point;
import android.os.Bundle;
import com..mapapi.BMapManager;
import com..mapapi.GeoPoint;
import com..mapapi.MapActivity;
import com..mapapi.MapController;
import com..mapapi.MapView;
import com..mapapi.Overlay;
import com..mapapi.Projection;
import com.life.hua.activity.BaseApplication;
import com.life.hua.activity.R;
public class BaiMapActivity extends MapActivity {
private Context mContext;
private MapView mapView;
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
private GeoPoint gpoint1, gpoint2, gpoint3;// 連線的點
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.map_layout);
BaseApplication baseApp = (BaseApplication) this.getApplication();
if (baseApp.mBMapManage == null) {
baseApp.mBMapManage = new BMapManager(mContext);
baseApp.mBMapManage.init(baseApp.mStrKey,
new BaseApplication.MyGeneralListener());
}
baseApp.mBMapManage.start();
super.initMapActivity(baseApp.mBMapManage);// 初始化map sdk
mapView = (MapView) findViewById(R.id.bmapView);
mapView.setBuiltInZoomControls(true);
// 設置在縮放動畫過程中也顯示overlay,默認為不繪制
mapView.setDrawOverlayWhenZooming(true);
// RouteLine routeLine =
// (RouteLine)getIntent().getSerializableExtra("routeLine");
//這里畫點和連接線
MyOverlay myOverlay = new MyOverlay();
mapView.getOverlays().add(myOverlay);
MapController mapController = mapView.getController();
mapController.zoomIn();
gpoint1 = new GeoPoint((int) (2259316 * 10),
(int) (11396279 * 10));
gpoint2 = new GeoPoint((int) (2259245 * 10),
(int) (11396226 * 10));
gpoint3 = new GeoPoint((int) (2259121 * 10),
(int) (11396066 * 10));
mapController.animateTo(gpoint1);//設置一個起點
}
class MyOverlay extends Overlay {
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
Projection projection = mapView.getProjection();
Point p1 = new Point();
Point p2 = new Point();
Point p3 = new Point();
// 經度轉像素
projection.toPixels(gpoint1, p1);
projection.toPixels(gpoint2, p2);
projection.toPixels(gpoint3, p3);
//第一個畫筆 畫圓
Paint fillPaint = new Paint();
fillPaint.setColor(Color.BLUE);
fillPaint.setAntiAlias(true);
fillPaint.setStyle(Style.FILL);
// 將圖畫到上層
canvas.drawCircle(p1.x, p1.y, 5.0f, fillPaint);
canvas.drawCircle(p2.x, p2.y, 5.0f, fillPaint);
canvas.drawCircle(p3.x, p3.y, 5.0f, fillPaint);
//第二個畫筆 畫線
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setDither(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(4);
//連接
Path path = new Path();
path.moveTo(p1.x, p1.y);
path.lineTo(p2.x, p2.y);
path.lineTo(p3.x, p3.y);
//畫出路徑
canvas.drawPath(path, paint);
}
}
}
Ⅱ android類似百度地圖圖層效果是怎樣做的,還有那種點擊事件
這里有一個網路地圖劃線的例子,通過添加地圖圖層實現的,可以參考一下
Ⅲ android手機的效果如何實現,地圖效果實現
去看一下API 用網路地圖吧 API中文的
Ⅳ 移動gis平台ucmap for android有哪些功能哪位大神詳細列舉一下
UCMap for Android是當前主流的移動GIS開發組件,擁有業界最快的地圖顯示性能,依託龐大的介面體系為開發者提供強大且豐富的定製功能,UCMap for Android從2009年第一版推出至今,經歷了多次的版本升級,其穩定性得到眾多實際項目的檢驗,在GIS各行業得到廣泛應用,例如,土地確權、國土監察、電力踏勘、林業調查、林業消防、管線巡檢、部件採集、城市管理、房產測繪、農業測圖配方、單兵通、航跡管理、室內導航、智慧景區、公安應急等
1、數據格式
UCMap for Android支持通用的矢量地圖格式SHP,支持各種遙感影像格式Geotiff、Img、BMP、JPG、PNG等,同時還支持離線的Google地圖和影像,或者自定義瓦片圖;
2、數據加密
地圖數據是重要的保密信息,為了在數據丟失或未授權的情況下,外界無法解讀出數據本身的內容,這就要求數據以密文的形式存在;為此,UCMap for Android支持地圖數據的加密,經過加密的地圖是以密文的形式存在,只有輸入正確的口令才能解密;
3、數據更新
地圖數據是有現勢性的,即經過一段時間,由於地理自然環境的變化,地圖數據也應及時更新,這樣才能讓地圖數據更加准確地反映現實情況,所以,地圖數據的更新就顯得尤為重要;UCMap for Android不但支持離線地圖,同時也支持地圖在線更新,即可以在線更新替換整個地圖數據,也可以更新替換地圖中的某些圖層;
4、符號化
地圖是將地理數據通過符號化的方式予以展現的,UCMap for Android除了支持常規預定義的點、線、面符號外,還支持自定義的SVG矢量符號,用戶可以自定義各種矢量符號來渲染地圖,實現地圖強大的直觀表現力;
5、地圖顯示
地圖是由各個專題的圖層疊加而成,圖層的性質有兩種,即矢量圖層和影像圖層,在坐標一致的前提下,可以將影像圖層作為背景圖,將矢量圖層疊加在影像圖層之上;UCMap for Android擁有業界最高的地圖瀏覽性能,支持矢量圖和影像圖疊加顯示,支持地圖的縮小、放大、平移、雙指旋轉,支持滑動的動畫效果,支持地圖比例尺&指北針等小部件;
6、地圖與圖層管理
裝載地圖、設置\獲取地圖范圍、設置\獲取地圖比例尺、設置\獲取地圖單位、獲取地圖圖層,添加圖層、刪除圖層、調整圖層順序、修改圖層標注欄位、修改圖層樣式、查詢圖層等;
7、地圖查詢
地圖查詢分屬性查詢和空間查詢,屬性查詢是以地圖要素的某些屬性值為條件進行SQL查詢,查詢返回要素的屬性或幾何信息;空間查詢是以地圖要素之間的空間拓撲關系為條件進行擴展型的SQL查詢;UCMap for Android支持各種類型的SQL查詢,尤其是空間查詢,能覆蓋要素之間各種空間拓撲關系,如Disjoint、Touches、Crosses、Within、Overlaps、Contains、Intersects、Equals、DWithin等空間謂詞;
8、要素編輯
一個要素對應資料庫表中的一條記錄,記錄里有屬性欄位和幾何欄位,所謂編輯就是對這些屬性欄位和幾何欄位進行增加、刪除、修改等動作,於是,添加要素、刪除要素、更新要素、導出shp是UCMap for Android最基礎的功能;為了適應移動端手指或觸筆來編輯幾何圖形,UCMap for Android設計了人性化的編輯交互模式,如點選或框選要素、捕捉節點、移動節點、添加節點、刪除節點、移動要素、編輯動作的Redo\Undo(可以無數次)、信息查詢info等;UCMap for Android還提供了更高級的編輯,如線或圖斑的裁剪、合並等拓撲編輯;針對測量成圖的需求,還提供了根據測圖過程中測得的長度和角度自動繪制圖形的功能;
9、專題圖渲染
UCMap for Android支持多種專題圖渲染,根據所給定的屬性條件,可定製各種專題渲染,甚至可以隱藏圖層中的要素;
10、坐標系轉換
UCMap for Android支持2個任意投影類型之間的坐標轉換,支持四參數、七參數坐標轉換;
11、地圖量算
UCMap for Android支持地圖測距、測面積、測角度;
12、定位監控和軌跡顯示
UCMap for Android能實時對若干監控點進行實時顯示並快速刷新,能查詢並繪制某個監控點的歷史軌跡;
13、地圖標注
UCMap for Android提供了一個特殊的圖層,即裝飾圖層,用戶可以在這個圖層上對地圖進行標繪,下面要重點介紹的地圖標繪就繪制在這個圖層上,除了能標繪軍標以外,還能繪制矩形、直線、圓、橢圓、路徑、文字等;
14、等值線繪制
UCMap for Android支持對離散高程點(或氣象點)進行插值,並生成高程等值線或氣象等值線圖;
15、路徑規劃與導航
UCMap for Android支持特定場所的簡單道路的路徑規劃,例如,室內地圖、景區地圖、港口碼頭等特定場所的路徑規劃;
16、地圖標繪
針對軍事作戰、應急等行業,協同標繪是其基本需求,UCMap for Android是支持矢量標繪,能對標繪的符號進行組合、拆分、移動、縮放、拉伸、旋轉等等操作;標繪是在裝飾圖層上進行的,一個標繪就是一個裝飾對象,裝飾對象可以是任意的SVG符號,也可以是預定義的圖形;對於測繪行業,地圖標繪也為測繪草圖的繪制提供了完美的解決方案;
17、集成功能
UCMapfor Android還可以將手機拍照、錄音、錄像、GPS定位等功能集成在一起,在地圖上記錄這些多媒體信息採集的時空信息;
UCMapfor Android為開發人員提供了強大的GIS基礎平台,用戶根據自身項目的需求、通過二次開發來實現所需要的應用產品;UCMap介面龐大、結合本人近幾年移動GIS開發經驗,以上只是UCMap基礎功能的節略,更深入細致的使用還需要開發者閱讀UCMap的開發教程和API文檔!
Ⅳ android 視圖 如何做成百度地圖的這種效果
所謂的浮在另一個View上,其實只不過是在一個布局中先畫和後畫的問題,比如這就是先畫的地圖,後畫的搜索框,你可以用relatedlayout的布局,布局上先寫View後寫搜索框,並且View是fillparent而搜索框是wrapcontent,這樣後畫上去的搜索框就畫在上面了,另外framelayout也可以。半透明搜索框的話可以直接用半透明圖或者用#D0000000這種半透明來修飾
Ⅵ Android 天地圖怎麼定位動畫怎麼移除
map.addEventListener("tilesloaded",add_marker);
function add_marker(){
map.clearOverlays();//清除現有的marker
var center = map.getCenter();
position_arr[1] = parseFloat(center.lat);//添加偏移量----y
position_arr[0] = parseFloat(center.lng);//添加偏移量----x
var pt = new BMap.Point(position_arr[0],position_arr[1]);
var marker = new BMap.Marker(pt); // 創建標注
map.addOverlay(marker); // 將標注添加到地圖中
marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳動的動畫
map.removeEventListener("tilesloaded",add_marker);
Ⅶ 安卓手機下載的谷歌地圖怎麼使用3d效果
地圖上面點擊街道,然後出一個方塊,上面寫的是街道名字,點進去就OK了,是個小人圖案
別的國家不知道,美國可以,看了洛杉磯和華盛頓,還不錯,試試吧.
Ⅷ android地圖縮小放大的時候maker之間聚合是什麼原理
<1>GeoPoint
表示一個地理坐標點,存放經度和緯度,以微度的整數形式存儲。
方法
GeoPoint(int latitudeE6, int longitudeE6)用給定的經緯度構造一個GeoPoint
方法介紹:
public int getLatitudeE6()
返回GeoPoint的緯度,單位微度
public int getLongitudeE6()
返回GeoPoint的經度,單位微度
public void setLatitudeE6(int latitudeE6)
設置GeoPoint的緯度,單位微度
public void setLongitudeE6(int longitudeE6)
設置GeoPoint的經度,單位微度
<2>介面 Projection
該介面用來在屏幕像素x/y坐標系和地球經緯度坐標系之間進行轉換,通過 MapView.getProjection()來取得映射類。
GeoPoint fromPixels(int x, int y)
該方法用給定的像素坐標創建一個新的GeoPoint。
給定的像素點是以MapView的左上角為原點的坐標系統,MapView提供了這個像素轉換器(PixelConverter)。 參數:result -
搜索結果iError - 錯誤號,0表示正確返回
Point toPixels(GeoPoint in, Point out)
把給定的GeoPoint變換到相對於MapView左上角的屏幕像素坐標。MapView提供了這種投影變換。 參數:in - 待變換的一對經緯度out
- 一個用於輸出預先存在的對象;如果為空,將返回一個新分配的像素點。
<3>MapController
處理地圖移動和縮放的工具類。
返回類型方法
voidanimateTo(GeoPoint point)對以給定的點GeoPoint,開始動畫顯示地圖。
voidanimateTo(GeoPoint point, Message message)對以給定的GeoPoint,開始動畫顯示地圖。
booleanonKey(View v, int keyCode, KeyEvent event)處理按鍵事件,把事件變換為適度的地圖平移。
voidscrollBy(int x, int y)按照給定的像素數據量滾動。
voidsetCenter(GeoPoint point)在給定的中心點GeoPoint上設置地圖視圖。
intsetZoom(int zoomLevel)設置地圖的縮放級別。
voidstopAnimation(boolean
jumpToFinish)終止所有未完成的動畫,有條件的把地圖中心修正到已完成的特殊動畫的偏移量上去。
voidstopPanning()重新設置平移狀態,使地圖靜止。
booleanzoomIn()放大一個級別。
booleanzoomInFixing(int xPixel, int yPixel)放大一個級別。
booleanzoomOut()縮小一個級別。
booleanzoomOutFixing(int xPixel, int yPixel)縮小一個級別。
voidzoomToSpan(int latSpanE6, int lonSpanE6)嘗試調整地圖的縮放,以便顯示給定的經緯度范圍。
<4>MapView
一個顯示地圖的視圖,當被焦點選中時,它能捕獲按鍵事件和觸摸手勢去平移和縮放地圖。
返回類型方法
booleancanCoverCenter()檢查當前是否有地圖貼片覆蓋地圖中心點。
protected booleancheckLayoutParams (android.view.ViewGroup.LayoutParams
p)僅檢查p是否是的一個MapView.LayoutParams實例。
voidcomputeScroll()捕獲滾動事件,用它們去平移地圖。
voiddisplayZoomControls(boolean takeFocus)顯示縮放控制項,可以選擇是否請求焦點選中以便通過按鍵訪問。
protected
android.view.ViewGroup.()返回一個Layout參數的集合,其中參數帶有ViewGroup.LayoutParams.WRAP_CONTENT的寬度,ViewGroup.LayoutParams.WRAP_CONTENT高度和坐標(0,0)。
protected
android.view.ViewGroup.(android.view.ViewGroup.LayoutParams
p)
android.view.ViewGroup.(AttributeSet
attrs)
MapControllergetController()返回地圖的MapController,這個對象可用於控制和驅動平移和縮放。
intgetLatitudeSpan()當前緯線的跨度(從地圖的上邊緣到下邊緣),十進制度×1,000,000。
intgetLongitudeSpan()當前經度的跨度(從地圖的左邊緣到地圖的右邊緣),單位:十進制的度×1,000,000。
GeoPointgetMapCenter()返回當前地圖中心點位置,做為一個GeoPoint(經度、緯度)的對象。
intgetMaxZoomLevel()返回當前視圖中心點的最大縮放級別。
java.util.ListgetOverlays()獲取Overlay列表。
ProjectiongetProjection()獲取屏幕像素坐標和經緯度對之間的轉換。
ViewgetZoomControls()已過時。
intgetZoomLevel()返回當前地圖的縮放級別。
booleanisSatellite()
booleanisStreetView()
booleanisTraffic()是否顯示交通流量。
protected voidonDetachedFromWindow()當被分離調用,清除縮放控制項。
protected voidonDraw(Canvas canvas)
voidonFocusChanged(boolean hasFocus, int direction, Rect
previouslyFocusedRect)當這個視圖的焦點狀態變化時被視圖系統調用。
booleanonKeyDown(int keyCode, KeyEvent event)把按鍵傳送到overlay。
booleanonKeyUp(int keyCode, KeyEvent event)把按鍵傳送到overlay。
protected voidonLayout(boolean flag, int l, int t, int r, int b)
protected voidonMeasure(int widthMeasureSpec, int heightMeasureSpec)
voidonRestoreInstanceState(Bundle state)把MapView的狀態恢復到一個Bundle。
voidonSaveInstanceState(Bundle state)把MapView的狀態存儲到一個Bundle中。
protected voidonSizeChanged(int w, int h, int oldw, int
oldh)重新調整地圖對象的尺寸。
booleanonTouchEvent(MotionEvent
event)首先把touch事件傳送到overlay,如果它不處理它們,就把事件再傳送到手勢探測器,然後分發探測到的手勢。
booleanonTrackballEvent(MotionEvent
event)把trackball事件首先傳送到overlay,如果它們不處理消息,嘗試取平移和點擊。
voidonWindowFocusChanged(boolean hasFocus)當包含這個視圖的窗口得到或是去焦點時被調用。
voidpreLoad()
voidsetDrawOverlayWhenZooming(boolean bDraw)設置在縮放動畫過程中是否繪制overlay,默認為不繪制。
如果繪制,在覆蓋物很多的情況下效率會有損失。 自1.1版本之後支持。
voidsetBuiltInZoomControls(boolean on)設置是否啟用內置的縮放控制項。
voidsetReticleDrawMode(com..mapapi.MapView.ReticleDrawMode
mode)暫不支持。
voidsetSatellite(boolean on)設置是否打開衛星圖。
voidsetStreetView(boolean on)暫不支持。
voidsetTraffic(boolean on)設置是否打開交通流量圖層。
voidregMapViewListener(BMapManager bmapMan, MKMapViewListener
listener)注冊地圖顯示事件監聽器。
<5>MyLocationOverlay
一個負責顯示用戶當前位置的Overlay。
Overlay是一個覆蓋,它繪制用戶當前在地圖上的位置(精準度),和/或一個嵌入的指南針。子類能覆蓋方法dispatchTap()去處理對當前位置的點擊。
為了開啟這個overlay的功能,需要去調用enableMyLocation()和/或enableCompass(),
或調用Activity中的Activity.onResume()方法。記住,當在後台是,要在Activity中的Activity.onPause()方法中調用相應的disableMyLocation()和/或disableCompass()關閉這個功能。
返回類型方法
voiddisableCompass()關閉指南針的更新。
voiddisableMyLocation()停止位置更新。
protected booleandispatchTap()在「我的位置」坐標上處理點擊事件。
booleandraw(Canvas canvas, MapView mapView, boolean shadow, long
when)繪制方法。
protected voiddrawCompass(android.graphics.Canvas canvas, float
bearing)繪制指南針。
protected voiddrawMyLocation(Canvas canvas, MapView mapView,
android.location.Location lastFix, GeoPoint myLocation, long when)繪制「我的位置」點。
booleanenableCompass()開啟指南針更新功能。
booleanenableMyLocation()嘗試開啟MyLocation功能,並向MKLocationManager.GPS_PROVIDER和MKLocationManager.NETWORK_PROVIDER注冊更新。
LocationgetLastFix()返回一個位置,對應於最近設定的用戶位置。
GeoPointgetMyLocation()返回一個GeoPoint,對應於一個最近設定的用戶位置。
floatgetOrientation()返回最近設定的的指南針朝向。
booleanisCompassEnabled()檢查指南針小部件是否被顯示。
booleanisMyLocationEnabled()
voidonAccuracyChanged(Sensor sensor, int accuracy)
voidonLocationChanged(Location location)監聽並獲取位置更新。
voidonProviderDisabled(java.lang.String provider)
voidonProviderEnabled(java.lang.String provider)
voidonSensorChanged(SensorEvent event)當指南針的值變換時,由SensorManager調用。
booleanonSnapToItem(int x, int y, android.graphics.Point snapPoint, MapView
mapView)檢查給定的(x,y)是否和引起當前行為(如縮放)的item足夠靠近。
booleanonTap(GeoPoint p, MapView mapView)檢查點擊的位置是否非常接近於當前的位置(如果已知)。
booleanrunOnFirstFix(java.lang.Runnable
runnable)把一個runnable加入隊列,一旦收到一個位置信息,這個runnable就被執行。
<6>Overlay
Overlay是一個基類,它表示可以顯示在地圖上方的覆蓋overlay。
添加一個overlay時,從這個基類派生出一個子類,創建一個實例,然後把它加入到一個列表中。這個列表通過調用MapView.getOverlays()得到。為了允許用戶觸摸去對齊一個點,子類應當實現Overlay.Snappable介面。
返回類型方法
booleandraw(Canvas canvas, MapView mapView, boolean
shadow)在地圖上繪制overlay。
booleandraw(Canvas canvas, MapView mapView, boolean shadow, long
when)專門繪制動畫overlay的調用。
protected static voiddrawAt(Canvas canvas, Drawable drawable, int x, int y,
boolean bShadow)在某個偏移位置畫一個Drawable的便捷方法。
booleanonKeyDown(int keyCode, KeyEvent event, MapView
mapView)處理一個按鍵被按下的事件。
booleanonKeyUp(int keyCode, KeyEvent event, MapView mapView)處理一個按鍵放開事件。
booleanonTap(GeoPoint p, MapView mapView)處理一個「點擊」事件。
booleanonTouchEvent(MotionEvent e, MapView mapView)處理一個觸摸事件。
booleanonTrackballEvent(MotionEvent e, MapView mapView)處理一個軌跡球事件。
Ⅸ Android開發中如何使百度地圖顯示3D效果,求源代碼
現在可以在網路地圖上點擊』三維』按鈕,看到北京城三環內的3D建築物。畫面的細膩程度堪比游戲,但這也是困惑,因為三維網路地圖沒有給這是一個地圖的概念,到像是一款模擬城市游戲。
Google Earth 3D Maps中的三維城市多以實景建模,隨著滑鼠拉近拉遠,可以感受建築物的空間感。網路三維地圖目前還停留在3D繪畫的層次。
Ⅹ 地圖中添加大頭針如何添加動畫效果
哦。那你看看能不能通過重寫下他們把動畫給加上。或者可不可以根據文字自己用畫布實現一個動畫。