本篇文章給大家談?wù)劙沧块_發(fā)高德gis地圖,以及高德地圖手機app對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。
目錄一覽:
- 1、android開發(fā)如何用高德地圖進行模擬定位.
- 2、怎么用java開發(fā)安卓 高德地圖
- 3、高德地圖,android開發(fā)中,怎么用經(jīng)緯度來顯示地圖?
- 4、android開發(fā)如何用高德地圖進行模擬定位
- 5、android開發(fā) 調(diào)用高德地圖SDK
- 6、在安卓開發(fā)中如何在自己設(shè)置的經(jīng)緯度顯示到高德地圖上中心點
android開發(fā)如何用高德地圖進行模擬定位.
一、 要實現(xiàn)高德地圖定位呢,首先需要做好以下幾步準備:
1. 在高德開放平臺注冊帳號
2. 在開發(fā)中下載Android平臺下的地圖SDK和定位SDK文件
進入相關(guān)下載下載自己想要的功能或文件,圖只是截取了地圖SDK的頁面,定位SDK也是一樣,按自己想要的文件下載。下載完成后解壓得到:
添加微信好友, 獲取更多信息
復(fù)制微信號
- 3D地圖包解壓后得到:3D地圖顯示包“AMap_3DMap_VX.X.X_時間.jar”和庫文件夾(包含armeabi、arm64-v8a等庫文件)。
- 2D地圖包解壓后得到:2D地圖顯示包“AMap_2DMap_VX.X.X_時間.jar ”
- 定位SDK下載并解壓得到定位包“AMap_Location_V2.x.x.jar“
3. 添加jar包,將jar包放入工程的libs目錄下。
對于每個jar文件,右鍵-選擇Add As Library,導(dǎo)入到工程中。或者使用菜單欄 選擇 File -Project Structure-Modules- Dependencies。點擊綠色的加號選擇File dependency. 然后選擇要添加的jar包即可,此時build.gradle中會自動生成如下信息。
創(chuàng)建自己的應(yīng)用(創(chuàng)建過程內(nèi)需要的SHA1已經(jīng)的博客講過)
開發(fā)環(huán)境已經(jīng)配置好了,接下來就是敲代碼了。
二、 首先我們要做的就是將地圖顯示出來,通過以下幾步操作,即可在應(yīng)用中使用高德地圖SDK:
之一步:添加用戶key 在工程的“ AndroidManifest.xml ”文件如下代碼中添加您的用戶 Key。
application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
meta-data
android:name="com.amap.api.v2.apikey"
android:value="c9df032baec3ec50b1e089768ea4672b" /123456789
第二步:添加所需權(quán)限 在工程的“ AndroidManifest.xml ”文件中進行添加。
//地圖包、搜索包需要的基礎(chǔ)權(quán)限
uses-permission android:name="android.permission.INTERNET" /
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /
uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /
uses-permission android:name="android.permission.READ_PHONE_STATE" /
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /
//定位包、導(dǎo)航包需要的額外權(quán)限(注:基礎(chǔ)權(quán)限也需要)
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /
uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /
uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /
uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /1234567891011121314
第三步:在布局xml文件中添加地圖控件。
com.amap.api.maps2d.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent" /1234
第四步,創(chuàng)建地圖Activity,管理地圖生命周期。
public class MainActivity extends Activity {
private MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取地圖控件引用
mMapView = (MapView) findViewById(R.id.map_view);
//在activity執(zhí)行onCreate時執(zhí)行mMapView.o
mMapView.onCreate(savedInstanceState);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity執(zhí)行onDestroy時執(zhí)行mMapView.onDestroy(),實現(xiàn)地圖生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity執(zhí)行onResume時執(zhí)行mMapView.onResume (),實現(xiàn)地圖生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity執(zhí)行onPause時執(zhí)行mMapView.onPause (),實現(xiàn)地圖生命周期管理
mMapView.onPause();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//在activity執(zhí)行onSaveInstanceState時執(zhí)行mMapView.onSaveInstanceState (outState),實現(xiàn)地圖生命周期管理
mMapView.onSaveInstanceState(outState);
}
}12345678910111213141516171819202122232425262728293031323334353637
注意:一定要有mMapView.onCreate(savedInstanceState);
第二步:啟動定位功能:
1. 在主線程中獲得地圖對象AMap,并設(shè)置定位監(jiān)聽且實現(xiàn)LocationSource接口:
public class MainActivity extends Activity implements LocationSource{1
if (aMap == null) {
aMap = mMapView.getMap();
//設(shè)置顯示定位按鈕 并且可以點擊
UiSettings settings = aMap.getUiSettings();
aMap.setLocationSource(this);//設(shè)置了定位的監(jiān)聽,這里要實現(xiàn)LocationSource接口
// 是否顯示定位按鈕
settings.setMyLocationButtonEnabled(true);
aMap.setMyLocationEnabled(true);//顯示定位層并且可以觸發(fā)定位,默認是flase
}123456789
2. 配置定位參數(shù),啟動定位
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//設(shè)置定位回調(diào)監(jiān)聽,這里要實現(xiàn)AMapLocationListener接口,AMapLocationListener接口只有onLocationChanged *** 可以實現(xiàn),用于接收異步返回的定位結(jié)果,參數(shù)是AMapLocation類型。
mLocationClient.setLocationListener(this);
//初始化定位參數(shù)
mLocationOption = new AMapLocationClientOption();
//設(shè)置定位模式為Hight_Accuracy高精度模式,Battery_Saving為低功耗模式,Device_Sensors是僅設(shè)備模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
//設(shè)置是否返回地址信息(默認返回地址信息)
mLocationOption.setNeedAddress(true);
//設(shè)置是否只定位一次,默認為false
mLocationOption.setOnceLocation(false);
//設(shè)置是否強制刷新WIFI,默認為強制刷新
mLocationOption.setWifiActiveScan(true);
//設(shè)置是否允許模擬位置,默認為false,不允許模擬位置
mLocationOption.setMockEnable(false);
//設(shè)置定位間隔,單位毫秒,默認為2000ms
mLocationOption.setInterval(2000);
//給定位客戶端對象設(shè)置定位參數(shù)
mLocationClient.setLocationOption(mLocationOption);
//啟動定位
mLocationClient.startLocation();12345678910111213141516171819202122
高精度定位模式:
在這種定位模式下,將同時使用高德 *** 定位和GPS定位,優(yōu)先返回精度高的定位
低功耗定位模式:
在這種模式下,將只使用高德 *** 定位
僅設(shè)備定位模式:
在這種模式下,將只使用GPS定位。
3. 實現(xiàn)AMapLocationListener接口,獲取定位結(jié)果:
public class MainActivity extends Activity implem
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
if (aMapLocation.getErrorCode() == 0) {
//定位成功回調(diào)信息,設(shè)置相關(guān)消息
aMapLocation.getLocationType();//獲取當(dāng)前定位結(jié)果來源,如 *** 定位結(jié)果,詳見官方定位類型表
aMapLocation.getLatitude();//獲取緯度
aMapLocation.getLongitude();//獲取經(jīng)度
aMapLocation.getAccuracy();//獲取精度信息
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(aMapLocation.getTime());
df.format(date);//定位時間
aMapLocation.getAddress();//地址,如果option中設(shè)置isNeedAddress為false,則沒有此結(jié)果, *** 定位結(jié)果中會有地址信息,GPS定位不返回地址信息。
aMapLocation.getCountry();//國家信息
aMapLocation.getProvince();//省信息
aMapLocation.getCity();//城市信息
aMapLocation.getDistrict();//城區(qū)信息
aMapLocation.getStreet();//街道信息
aMapLocation.getStreetNum();//街道門牌號信息
aMapLocation.getCityCode();//城市編碼
aMapLocation.getAdCode();//地區(qū)編碼
// 如果不設(shè)置標志位,此時再拖動地圖時,它會不斷將地圖移動到當(dāng)前的位置
if (isFirstLoc) {
//設(shè)置縮放級別
aMap.moveCamera(CameraUpdateFactory.zoomTo(17));
//將地圖移動到定位點
aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude())));
//點擊定位按鈕 能夠?qū)⒌貓D的中心移動到定位點
mListener.onLocationChanged(aMapLocation);
//獲取定位信息
StringBuffer buffer = new StringBuffer();
buffer.append(aMapLocation.getCountry() + ""
+ aMapLocation.getProvince() + ""
+ aMapLocation.getCity() + ""
+ aMapLocation.getProvince()
+ aMapLocation.getDistrict() + ""
+ aMapLocation.getStreet() + ""
+ aMapLocation.getStreetNum());
Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show();
isFirstLoc = false;
}
} else {
//顯示錯誤信息ErrCode是錯誤碼,errInfo是錯誤信息,詳見錯誤碼表。
Log.e("AmapError", "location Error, ErrCode:"
+ aMapLocation.getErrorCode() + ", errInfo:"
+ aMapLocation.getErrorInfo());
Toast.makeText(getApplicationContext(), "定位失敗", Toast.LENGTH_LONG).show();
}
}
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
4.關(guān)于停止定位
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
//mLocationClient.stopLocation();//停止定位
mLocationClient.onDestroy();//銷毀定位客戶端。
//銷毀定位客戶端之后,若要重新開啟定位請重新New一個AMapLocationClient對象。
}
//激活定位
@Override
public void activate(OnLocationChangedListener onLocationChangedListener) {
mListener = onLocationChangedListener;
}
@Override
public void deactivate() {
mListener = null;
}12345678910111213141516171819
怎么用java開發(fā)安卓 高德地圖
首先創(chuàng)建工程,并在工程Build PathConfigure Build Path…libraries 中選擇“Add Externel JARs…”,選定
MapApi.jar,點擊OK,這樣就可以將高德地圖Android API 庫文件引入。然后在工程Build PathConfigure Build
Path…Order and Export 中將引入的庫文件MapApi.jar 選中,點擊OK,這樣您就可以在您的程序中使用高德地圖API
了。
二、我們在不熟悉的情況下、先盡量多的添加此軟件應(yīng)用權(quán)限;所以在mainifest中添加如下代碼;插入的位置在
application的代碼之前。
Java代碼
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/uses-permission
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/uses-permission
uses-permission android:name="android.permission.INTERNET"/uses-permission
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/uses-permission
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/uses-permission
uses-permission android:name="android.permission.READ_PHONE_STATE"/uses-permission
uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/uses-permission
uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/uses-permission
高德地圖,android開發(fā)中,怎么用經(jīng)緯度來顯示地圖?
首先創(chuàng)建工程,并在工程Build PathConfigure Build Path…libraries 中選擇“Add Externel JARs…”,選定
MapApi.jar,點擊OK,這樣就可以將高德地圖Android API 庫文件引入。然后在工程Build PathConfigure Build
Path…Order and Export 中將引入的庫文件MapApi.jar 選中,點擊OK,這樣您就可以在您的程序中使用高德地圖API
了。
二、我們在不熟悉的情況下、先盡量多的添加此軟件應(yīng)用權(quán)限;所以在mainifest中添加如下代碼;插入的位置在
application的代碼之前。
Java代碼
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/uses-permission
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/uses-permission
uses-permission android:name="android.permission.INTERNET"/uses-permission
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/uses-permission
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/uses-permission
uses-permission android:name="android.permission.READ_PHONE_STATE"/uses-permission
uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/uses-permission
uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/uses-permission
三、接著就要在res文件下的layout中添加界面布局了。其代碼如下、你可以完全復(fù)制進去。
Java代碼
?xml version="1.0" encoding="utf-8"?
LinearLayout xmlns:android=""
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
!--添加文本輸入框,查找地址--
LinearLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content" android:orientation="horizontal"
xmlns:android=""
android:layout_gravity="center_horizontal"
TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="經(jīng)度"/
EditText android:layout_height="fill_parent"
android:layout_width="100px"
android:id="@+id/longitude"/
TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="緯度"/
EditText android:layout_height="fill_parent"
android:layout_width="100px"
android:id="@+id/latitude"/
Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查找"
android:id="@+id/button"/
/LinearLayout
com.amap.mapapi.map.MapView android:id="@+id/mapView"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:clickable="true"
/
/LinearLayout
四、最后就是軟件的主程序部分了、里面需要的類和 *** 不多,主要以按鈕的監(jiān)聽器和地圖的界面實現(xiàn)為主
Java代碼
public void onCreate(Bundle savedInstanceState) {
// this.setMapMode(MAP_MODE_VECTOR);//設(shè)置地圖為矢量模式
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mMapView = (MapView) findViewById(R.id.mapView);
mMapView.setBuiltInZoomControls(true); // 設(shè)置啟用內(nèi)置的縮放控件
mMapController = mMapView.getController(); // 得到mMapView
// 的控制權(quán),可以用它控制和驅(qū)動平移和縮放
point = new GeoPoint((int) (39.982378 * 1E6), (int) (116.304923 * 1E6)); // 用給定的經(jīng)緯度構(gòu)造一個GeoPoint,單位是微度(度*
// 1E6)
// 按鈕添加監(jiān)聽器
button_location = (Button) findViewById(R.id.location);
longitude = (EditText) findViewById(R.id.longitude);
latidute = (EditText) findViewById(R.id.latitude);
locationListener = new OnClickListener() {
public void onClick(View e) {
if (e.equals(button_location)) {
// 得到文本輸入框的中經(jīng)緯 度坐標值
String latStr = longitude.getText().toString();
// 將得到的字符串轉(zhuǎn)成數(shù)值
double lat = Integer.parseInt(latStr);
String lngStr = latidute.getText().toString();
double lng = Integer.parseInt(lngStr);
//轉(zhuǎn)成經(jīng)緯度坐標
lat=lat*1E6;
lng=lng*1E6;
// 用給定的經(jīng)緯度構(gòu)造一個GeoPoint,單位是微度(度*1E6)
point = new GeoPoint((int) (lat), (int) (lng));
mMapController.setCenter(point); // 設(shè)置地圖中心點
mMapController.setZoom(12); // 設(shè)置地圖zoom 級別
// 添加地圖覆蓋物
// MyLocationOverlay(this, mMapView);
mylocTest.enableMyLocation(); // 判斷是否發(fā)現(xiàn)位置提供者
mylocTest.enableCompass(); // 打開指南針
mMapView.getOverlays().add(mylocTest);// 添加定位覆蓋物
}
}
};
// 按鈕添加監(jiān)聽器
button_location.setOnClickListener(locationListener);
mMapController.setCenter(point); // 設(shè)置地圖中心點
mMapController.setZoom(12); // 設(shè)置地圖zoom 級別
// 添加地圖覆蓋物
mylocTest = new MyLocationOverlay(this, mMapView);
mylocTest.enableMyLocation(); // 判斷是否發(fā)現(xiàn)位置提供者
mylocTest.enableCompass(); // 打開指南針
mMapView.getOverlays().add(mylocTest);// 添加定位覆蓋物
}
//另外一個添加界面覆蓋物的類:
public class MyLocationOverlayProxy extends com.amap.mapapi.map.MyLocationOverlay{
private Location mLocation;
protected final Paint mPaint = new Paint();
protected final Paint mCirclePaint = new Paint();
private Bitmap gps_marker=null;
private Point mMapCoords = new Point();
private final float gps_marker_CENTER_X;
private final float gps_marker_CENTER_Y;
private final LinkedListRunnable mRunOnFirstFix = new LinkedListRunnable();
public MyLocationOverlayProxy(amap amap, MapView mMapView) {
super(amap, mMapView);
gps_marker = ((BitmapDrawable) amap.getResources().getDrawable(
R.drawable.marker_gpsvalid)).getBitmap();
gps_marker_CENTER_X = gps_marker.getWidth() / 2 - 0.5f;
gps_marker_CENTER_Y= gps_marker.getHeight() / 2 - 0.5f;
}
public boolean runOnFirstFix(final Runnable runnable) {
if (mLocation != null) {
new Thread(runnable).start();
return true;
} else {
mRunOnFirstFix.addLast(runnable);
return false;
}
}
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
mLocation = location;
for(final Runnable runnable : mRunOnFirstFix) {
new Thread(runnable).start();
}
mRunOnFirstFix.clear();
super.onLocationChanged(location);
}
protected void drawMyLocation(Canvas canvas, MapView mapView, final Location mLocation,
GeoPoint point, long time) {
Projection pj=mapView.getProjection();
if (mLocation != null) {
mMapCoords=pj.toPixels(point, null);
final float radius = pj.metersToEquatorPixels(mLocation.getAccuracy());
this.mCirclePaint.setAntiAlias(true);
this.mCirclePaint.setARGB(35, 131, 182, 222);
this.mCirclePaint.setAlpha(50);
this.mCirclePaint.setStyle(Style.FILL);
canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint);
this.mCirclePaint.setARGB(225, 131, 182, 222);
this.mCirclePaint.setAlpha(150);
this.mCirclePaint.setStyle(Style.STROKE);
canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint);
canvas.drawBitmap(gps_marker, mMapCoords.x-gps_marker_CENTER_X, mMapCoords.y-gps_marker_CENTER_Y, this.mPaint);
}
}
}
android開發(fā)如何用高德地圖進行模擬定位
一、 要實現(xiàn)高德地圖定位呢,首先需要做好以下幾步準備: 1 在高德開放平臺注冊帳號 2 在開發(fā)中下載Android平臺下的地圖SDK和定位SDK文件 進入相關(guān)下載下載自己想要的功能或文件,圖只是截取了地圖SDK的頁面,定位SDK也是一樣,按自己想要的文android開發(fā)如何用高德地圖進行模擬定位
android開發(fā) 調(diào)用高德地圖SDK
高德地圖使用的是面向接口的框架,其ViewMap類作為核心類,需要重寫Activity生命周期的所有 *** ,這要求開發(fā)者具備面向?qū)ο蠖鄳B(tài)性,繼承性的功底。如果不理解常用的設(shè)計模式和架構(gòu),對于該平臺的掌握會稍微吃力。
在安卓開發(fā)中如何在自己設(shè)置的經(jīng)緯度顯示到高德地圖上中心點
首先創(chuàng)建工程,并在工程Build PathConfigure Build Path…libraries 中選擇“Add Externel JARs…”,選定
MapApi.jar,點擊OK,這樣就可以將高德地圖Android API 庫文件引入。然后在工程Build PathConfigure Build
Path…Order and Export 中將引入的庫文件MapApi.jar 選中,點擊OK,這樣您就可以在您的程序中使用高德地圖API
了。
二、我們在不熟悉的情況下、先盡量多的添加此軟件應(yīng)用權(quán)限;所以在mainifest中添加如下代碼;插入的位置在
application的代碼之前。
Java代碼
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/uses-permission
uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/uses-permission
uses-permission android:name="android.permission.INTERNET"/uses-permission
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/uses-permission
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/uses-permission
uses-permission android:name="android.permission.READ_PHONE_STATE"/uses-permission
uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/uses-permission
uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/uses-permission
三、接著就要在res文件下的layout中添加界面布局了。其代碼如下、你可以完全復(fù)制進去。
Java代碼
?xml version="1.0" encoding="utf-8"?
LinearLayout xmlns:android=""
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
!--添加文本輸入框,查找地址--
LinearLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content" android:orientation="horizontal"
xmlns:android=""
android:layout_gravity="center_horizontal"
TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="經(jīng)度"/
EditText android:layout_height="fill_parent"
android:layout_width="100px"
android:id="@+id/longitude"/
TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="緯度"/
EditText android:layout_height="fill_parent"
android:layout_width="100px"
android:id="@+id/latitude"/
Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查找"
android:id="@+id/button"/
/LinearLayout
com.amap.mapapi.map.MapView android:id="@+id/mapView"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:clickable="true"
/
/LinearLayout
四、最后就是軟件的主程序部分了、里面需要的類和 *** 不多,主要以按鈕的監(jiān)聽器和地圖的界面實現(xiàn)為主
Java代碼
public void onCreate(Bundle savedInstanceState) {
// this.setMapMode(MAP_MODE_VECTOR);//設(shè)置地圖為矢量模式
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mMapView = (MapView) findViewById(R.id.mapView);
mMapView.setBuiltInZoomControls(true); // 設(shè)置啟用內(nèi)置的縮放控件
mMapController = mMapView.getController(); // 得到mMapView
// 的控制權(quán),可以用它控制和驅(qū)動平移和縮放
point = new GeoPoint((int) (39.982378 * 1E6), (int) (116.304923 * 1E6)); // 用給定的經(jīng)緯度構(gòu)造一個GeoPoint,單位是微度(度*
// 1E6)
// 按鈕添加監(jiān)聽器
button_location = (Button) findViewById(R.id.location);
longitude = (EditText) findViewById(R.id.longitude);
latidute = (EditText) findViewById(R.id.latitude);
locationListener = new OnClickListener() {
public void onClick(View e) {
if (e.equals(button_location)) {
// 得到文本輸入框的中經(jīng)緯 度坐標值
String latStr = longitude.getText().toString();
// 將得到的字符串轉(zhuǎn)成數(shù)值
double lat = Integer.parseInt(latStr);
String lngStr = latidute.getText().toString();
double lng = Integer.parseInt(lngStr);
//轉(zhuǎn)成經(jīng)緯度坐標
lat=lat*1E6;
lng=lng*1E6;
// 用給定的經(jīng)緯度構(gòu)造一個GeoPoint,單位是微度(度*1E6)
point = new GeoPoint((int) (lat), (int) (lng));
mMapController.setCenter(point); // 設(shè)置地圖中心點
mMapController.setZoom(12); // 設(shè)置地圖zoom 級別
// 添加地圖覆蓋物
// MyLocationOverlay(this, mMapView);
mylocTest.enableMyLocation(); // 判斷是否發(fā)現(xiàn)位置提供者
mylocTest.enableCompass(); // 打開指南針
mMapView.getOverlays().add(mylocTest);// 添加定位覆蓋物
}
}
};
// 按鈕添加監(jiān)聽器
button_location.setOnClickListener(locationListener);
mMapController.setCenter(point); // 設(shè)置地圖中心點
mMapController.setZoom(12); // 設(shè)置地圖zoom 級別
// 添加地圖覆蓋物
mylocTest = new MyLocationOverlay(this, mMapView);
mylocTest.enableMyLocation(); // 判斷是否發(fā)現(xiàn)位置提供者
mylocTest.enableCompass(); // 打開指南針
mMapView.getOverlays().add(mylocTest);// 添加定位覆蓋物
}
//另外一個添加界面覆蓋物的類:
public class MyLocationOverlayProxy extends com.amap.mapapi.map.MyLocationOverlay{
private Location mLocation;
protected final Paint mPaint = new Paint();
protected final Paint mCirclePaint = new Paint();
private Bitmap gps_marker=null;
private Point mMapCoords = new Point();
private final float gps_marker_CENTER_X;
private final float gps_marker_CENTER_Y;
private final LinkedListRunnable mRunOnFirstFix = new LinkedListRunnable();
public MyLocationOverlayProxy(amap amap, MapView mMapView) {
super(amap, mMapView);
gps_marker = ((BitmapDrawable) amap.getResources().getDrawable(
R.drawable.marker_gpsvalid)).getBitmap();
gps_marker_CENTER_X = gps_marker.getWidth() / 2 - 0.5f;
gps_marker_CENTER_Y= gps_marker.getHeight() / 2 - 0.5f;
}
public boolean runOnFirstFix(final Runnable runnable) {
if (mLocation != null) {
new Thread(runnable).start();
return true;
} else {
mRunOnFirstFix.addLast(runnable);
return false;
}
}
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
mLocation = location;
for(final Runnable runnable : mRunOnFirstFix) {
new Thread(runnable).start();
}
mRunOnFirstFix.clear();
super.onLocationChanged(location);
}
protected void drawMyLocation(Canvas canvas, MapView mapView, final Location mLocation,
GeoPoint point, long time) {
Projection pj=mapView.getProjection();
if (mLocation != null) {
mMapCoords=pj.toPixels(point, null);
final float radius = pj.metersToEquatorPixels(mLocation.getAccuracy());
this.mCirclePaint.setAntiAlias(true);
this.mCirclePaint.setARGB(35, 131, 182, 222);
this.mCirclePaint.setAlpha(50);
this.mCirclePaint.setStyle(Style.FILL);
canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint);
this.mCirclePaint.setARGB(225, 131, 182, 222);
this.mCirclePaint.setAlpha(150);
this.mCirclePaint.setStyle(Style.STROKE);
canvas.drawCircle(mMapCoords.x, mMapCoords.y, radius, this.mCirclePaint);
canvas.drawBitmap(gps_marker, mMapCoords.x-gps_marker_CENTER_X, mMapCoords.y-gps_marker_CENTER_Y, this.mPaint);
}
}
}
如果 不清楚啊, 可以到我群里討論 look at my n a m e
安卓開發(fā)高德gis地圖的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于高德地圖手機app、安卓開發(fā)高德gis地圖的信息別忘了在本站進行查找喔。