導航:首頁 > 操作系統 > androidgeopoint

androidgeopoint

發布時間:2023-01-01 23:28:00

1. android 開發使用最新百度地圖如何畫軌跡

android 使用網路地圖畫軌跡

java">importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.graphics.Paint.Style;
importandroid.graphics.Path;
importandroid.graphics.Point;
importandroid.os.Bundle;
importcom..mapapi.BMapManager;
importcom..mapapi.GeoPoint;
importcom..mapapi.MapActivity;
importcom..mapapi.MapController;
importcom..mapapi.MapView;
importcom..mapapi.Overlay;
importcom..mapapi.Projection;

{
privateContextmContext;
privateMapViewmapView;
@Override
(){
//TODOAuto-generatedmethodstub
returnfalse;
}
privateGeoPointgpoint1,gpoint2,gpoint3;//連線的點
@Override
protectedvoidonCreate(Bundlearg0){
super.onCreate(arg0);
setContentView(R.layout.map_layout);

BaseApplicationbaseApp=(BaseApplication)this.getApplication();
if(baseApp.mBMapManage==null){
baseApp.mBMapManage=newBMapManager(mContext);
baseApp.mBMapManage.init(baseApp.mStrKey,
newBaseApplication.MyGeneralListener());
}
baseApp.mBMapManage.start();
super.initMapActivity(baseApp.mBMapManage);//初始化mapsdk
mapView=(MapView)findViewById(R.id.bmapView);
mapView.setBuiltInZoomControls(true);
//設置在縮放動畫過程中也顯示overlay,默認為不繪制
mapView.setDrawOverlayWhenZooming(true);

//RouteLinerouteLine=
//(RouteLine)getIntent().getSerializableExtra("routeLine");

//這里畫點和連接線
MyOverlaymyOverlay=newMyOverlay();
mapView.getOverlays().add(myOverlay);

MapControllermapController=mapView.getController();
mapController.zoomIn();

gpoint1=newGeoPoint((int)(2259316*10),
(int)(11396279*10));
gpoint2=newGeoPoint((int)(2259245*10),
(int)(11396226*10));
gpoint3=newGeoPoint((int)(2259121*10),
(int)(11396066*10));
mapController.animateTo(gpoint1);//設置一個起點
}

classMyOverlayextendsOverlay{

@Override
publicvoiddraw(Canvascanvas,MapViewmapView,booleanshadow){
super.draw(canvas,mapView,shadow);

Projectionprojection=mapView.getProjection();
Pointp1=newPoint();
Pointp2=newPoint();
Pointp3=newPoint();
//經度轉像素
projection.toPixels(gpoint1,p1);
projection.toPixels(gpoint2,p2);
projection.toPixels(gpoint3,p3);

//第一個畫筆畫圓
PaintfillPaint=newPaint();
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);

//第二個畫筆畫線
Paintpaint=newPaint();
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);

//連接
Pathpath=newPath();
path.moveTo(p1.x,p1.y);
path.lineTo(p2.x,p2.y);
path.lineTo(p3.x,p3.y);
//畫出路徑
canvas.drawPath(path,paint);
}
}

}

2. android 高德地圖上做開發,四個點之間距離最短的走法,如何實現....

如何能實現 四個點之間都走過而且距離是最短的,目前實現的只能是兩個點,一個起點,一個終點間的距離,並且在做把終點再當做起點到另一點的終點時,畫的線會被後者給覆蓋了;所以就看不到前面線路還有距離了..

GeoPoint startPoint = new GeoPoint(39908717, 116397516);
GeoPoint point1 = new GeoPoint(39908717,116459516);
FromAndTo fromAndTo = new FromAndTo(startPoint, point1);

try {
//Route.DrivingLeastDistance 為最短的行駛路線
List<Route> route = Route.calculateRoute(RouteDemo.this, fromAndTo,Route.DrivingLeastDistance);
// 構造RouteOverlay 參數為MapActivity cnt, Route rt。這里只取了查到路徑的第一條。
if (route.size() > 0) {
routeOverlay = new RouteOverlay(RouteDemo.this, route.get(0));
routeOverlay.registerRouteMessage(rmHandler);// 注冊人消息處理函數
routeOverlay.addToMap(mMapView);// 加入地圖
routeOverlay.enableDrag(false);

int length = routeOverlay.getRoute().getLength();//獲取路線長度
Log.e("route--length = >","總長為:"+length);
Toast.makeText(this, "length = "+length, Toast.LENGTH_SHORT);
}
} catch (AMapException e) {
e.printStackTrace();
}

當再調用一次這個方法時
routeOverlay.addToMap(mMapView);// 加入地圖

會覆蓋前面的那條 路線

如何能夠實現四點連在一起的的經過線路呢?

3. 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)處理一個軌跡球事件。

4. android 百度地圖上怎麼畫線,畫圓

//代碼如下
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.graphics.Paint.Style;
importandroid.graphics.Path;
importandroid.graphics.Point;
importandroid.os.Bundle;
importcom..mapapi.BMapManager;
importcom..mapapi.GeoPoint;
importcom..mapapi.MapActivity;
importcom..mapapi.MapController;
importcom..mapapi.MapView;
importcom..mapapi.Overlay;
importcom..mapapi.Projection;

{
privateContextmContext;
privateMapViewmapView;
@Override
(){
//TODOAuto-generatedmethodstub
returnfalse;
}
privateGeoPointgpoint1,gpoint2,gpoint3;//連線的點
@Override
protectedvoidonCreate(Bundlearg0){
super.onCreate(arg0);
setContentView(R.layout.map_layout);

BaseApplicationbaseApp=(BaseApplication)this.getApplication();
if(baseApp.mBMapManage==null){
baseApp.mBMapManage=newBMapManager(mContext);
baseApp.mBMapManage.init(baseApp.mStrKey,
newBaseApplication.MyGeneralListener());
}
baseApp.mBMapManage.start();
super.initMapActivity(baseApp.mBMapManage);//初始化mapsdk
mapView=(MapView)findViewById(R.id.bmapView);
mapView.setBuiltInZoomControls(true);
//設置在縮放動畫過程中也顯示overlay,默認為不繪制
mapView.setDrawOverlayWhenZooming(true);

//RouteLinerouteLine=
//(RouteLine)getIntent().getSerializableExtra("routeLine");

//這里畫點和連接線
MyOverlaymyOverlay=newMyOverlay();
mapView.getOverlays().add(myOverlay);

MapControllermapController=mapView.getController();
mapController.zoomIn();

gpoint1=newGeoPoint((int)(2259316*10),
(int)(11396279*10));
gpoint2=newGeoPoint((int)(2259245*10),
(int)(11396226*10));
gpoint3=newGeoPoint((int)(2259121*10),
(int)(11396066*10));
mapController.animateTo(gpoint1);//設置一個起點
}

classMyOverlayextendsOverlay{

@Override
publicvoiddraw(Canvascanvas,MapViewmapView,booleanshadow){
super.draw(canvas,mapView,shadow);

Projectionprojection=mapView.getProjection();
Pointp1=newPoint();
Pointp2=newPoint();
Pointp3=newPoint();
//經度轉像素
projection.toPixels(gpoint1,p1);
projection.toPixels(gpoint2,p2);
projection.toPixels(gpoint3,p3);

//第一個畫筆畫圓
PaintfillPaint=newPaint();
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);

//第二個畫筆畫線
Paintpaint=newPaint();
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);

//連接
Pathpath=newPath();
path.moveTo(p1.x,p1.y);
path.lineTo(p2.x,p2.y);
path.lineTo(p3.x,p3.y);
//畫出路徑
canvas.drawPath(path,paint);
}
}

}

5. android 版百度地圖如何通過定位功能獲得當前的位置所在的城市

網路地圖是通過移動通信基站定位來確定當前位置所在的城市。其原理就是通過測算周圍基站與手機的距離來交會估算手機的空間位置。
手機定位是指通過特定的定位技術來獲取移動手機或終端用戶的位置信息(經緯度坐標),在電子地圖上標出被定位對象的位置的技術或服務。定位技術有兩種,一種是基於GPS的定位,一種是基於移動運營網的基站的定位。基於GPS的定位方式是利用手機上的GPS定位模塊將自己的位置信號發送到定位後台來實現手機定位的。基站定位則是利用基站對手機的距離的測算距離來確定手機位置的。後者不需要手機具有GPS定位能力,但是精度很大程度依賴於基站的分布及覆蓋范圍的大小,有時誤差會超過一公里。前者定位精度較高。此外還有利用Wifi在小范圍內定位的方式。

6. 新人求助,Android百度地圖開發,怎麼設置新的中心點

//初始化地圖//定義中心點GeoPointpoint=newGeoPoint((int)(4.818*1E6),(int)(1.697*1E6));mMapView=(MapView)findViewById(R.id.bmapView);mMapView.getController().enableClick(true);//縮放級別mMapView.getController().setZoom(8);//設置中心點mMapView.getController().setCenter(point);

閱讀全文

與androidgeopoint相關的資料

熱點內容
社會學波普諾pdf 瀏覽:582
解壓做食物的小視頻 瀏覽:758
pdf怎麼單獨設置文件夾 瀏覽:472
業務邏輯程序員 瀏覽:659
addto新建文件夾什麼意思 瀏覽:160
有伺服器地址怎麼安裝軟體 瀏覽:659
安卓如何完全清除數據 瀏覽:690
安卓安卓證書怎麼信任 瀏覽:53
伺服器被攻擊如何解決 瀏覽:221
學霸變成程序員 瀏覽:881
c語言編譯錯誤fatalerror 瀏覽:441
ipv4內部伺服器地址怎麼分配 瀏覽:463
java線程安全的方法 瀏覽:950
重復命令畫梯形 瀏覽:164
在疫情就是命令 瀏覽:328
自己搭建一個什麼伺服器好玩 瀏覽:253
java基礎馬士兵 瀏覽:823
完美世界手游如何查看伺服器 瀏覽:859
光遇安卓與ios什麼時候互通 瀏覽:598
js如何運行時編譯 瀏覽:918