android地圖
① android百度地圖開發是免費的嗎
我們在學習安卓開發的時候,其中最重要的一個功能就是使用網路地圖實現定位,這樣的功能已經在各安卓應用中屢見不鮮,那麼我們要如何才能使用網路地圖呢?網路地圖是個什麼呢?我們來看本文,本文主要講述什麼事網路地圖,android開發如何使用網路地圖,詳細請看下文。
網路地圖 Android SDK是一套基於Android 2.1(v1.3.5及以前版本支持android 1.5以上系統)及以上版本設備的應用程序介面。您可以使用該套 SDK開發適用於Android系統移動設備的地圖應用,通過調用地圖SDK介面,您可以輕松訪問網路地圖服務和數據,構建功能豐富、交互性強的地圖類應用程序。
1)下載網路地圖移動版API(Android)開發包
網路地圖 Android SDK是一套基於Android 2.1(v1.3.5及以前版本支持android 1.5以上系統)及以上版本設備的應用程序介面。您可以使用該套 SDK開發適用於Android系統移動設備的地圖應用,通過調用地圖SDK介面,您可以輕松訪問網路地圖服務和數據,構建功能豐富、交互性強的地圖類應用程序。要在Android應用中使用網路地圖API,就需要在工程中引用網路地圖API開發包,這個開發包包含兩個文件:mapapi.jar和libBMapApiEngine.so。下載地址:http://developer..com/map/sdk-android.htm
2)申請API Key
網路地圖Android SDK提供的所有服務是免費的,介面使用無次數限制,但是我們使用網路地圖API之前必須要申請相應的API Key,然後才可使用網路地圖Android SDK。
3)網路地圖功能介紹
地圖展示:包括2D圖、衛星圖、3D圖地圖展示。
地圖操作:提供平移、縮放、雙指手勢操作、底圖旋轉等地圖相關操作。
自定義繪制:提供自定義繪制點、線、面基本幾何圖形的功能。
網路地圖導航:提供調起網路地圖Android版(v5.0及以上版本)導航功能。
地圖搜索:提供根據關鍵字進行范圍檢索、城市檢索和周邊檢索。且支持LBS雲檢索用戶自有數據。
詳情查詢:提供餐飲類的POI的詳細信息查看(Place詳情)。
線路規劃:提供公交、駕車和步行三種類型,多種方案(不含地鐵、時間優先、最少換乘、最少步行)的線路規劃。
地理編碼:提供地址信息與坐標之間的相互轉換。
位置標註:提供一個或多個POI位置標注,且支持用戶自定義圖標。
實時路況:提供城市實時交通路況信息圖。
離線地圖:提供離線地圖功能,可節省用戶流量。
定位:採用GPS、WIFI、基站、IP混合定位模式,請使用Android定位SDK獲取定位信息,使用地圖SDK定點陣圖層進行位置展示。
② android 百度地圖離線地圖包怎麼用
1.首先把離線地圖放在android工程下的assets裡面。
注意:建議離線地圖下載通過網路地圖APIDEMO去下載,因為到官網上下載的離線地圖文件格式不一樣,APIDEMO的格式是.dat,而官網上的格式是.dat_svc有可能載入不了地圖.
2.把離線地圖從assets下拷貝到sd卡下
public static void (Context context) {
try {
String filepath = Environment.getExternalStorageDirectory() + "/"
+ "BaiMapSDK" + "/" + "vmp" + "/" + "h" + "/"
+ "xxxxx.dat";
String path = Environment.getExternalStorageDirectory() + "/"
+ "BaiMapSDK" + "/" + "vmp" + "/" + "h" + "/";
File file = new File(path);
if (!file.exists()) {
file.mkdir();
}
if (!(new File(filepath)).exists()) {
new File(filepath).createNewFile();
InputStream is = context.getAssets().open(
"xxxx.dat");
FileOutputStream fos = new FileOutputStream(filepath);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
3.初始化離線地圖
private MKOfflineMap mOffline = null;
MapController mMapController;
mMapController = mMapView.getController();
mOffline = new MKOfflineMap();
mOffline.init(mMapController, new MKOfflineMapListener() {
@Override
public void onGetOfflineMapState(int type, int state) {
// TODO Auto-generated method stub
switch (type) {
case MKOfflineMap.TYPE_DOWNLOAD_UPDATE: {
}
break;
case MKOfflineMap.TYPE_NEW_OFFLINE:
break;
case MKOfflineMap.TYPE_VER_UPDATE:
break;
}
}
});
③ android 百度地圖全景怎麼實現的
package com.mikyou.tools;
import android.app.Application;
import android.content.Context;
import android.widget.Toast;
import com..lbsapi.BMapManager;
import com..lbsapi.MKGeneralListener;
import com..mapapi.SDKInitializer;
public class BaseApplication extends Application {
private static Context mContext;
public static float sScale;
public static int sWidthDp;
public static int sWidthPix;
public BMapManager mBMapManager = null;
private static BaseApplication mInstance;
public static BaseApplication getInstance() {
return mInstance;
}
@Override
public void onCreate() {
super.onCreate();
SDKInitializer.initialize(this);
initEngineManager(this);
mContext = this;
mInstance = this;
sScale = getResources().getDisplayMetrics().density;
sWidthPix = getResources().getDisplayMetrics().widthPixels;
sWidthDp = (int) (sWidthPix / sScale);
}
public void initEngineManager(Context context) {
if (mBMapManager == null) {
mBMapManager = new BMapManager(context);
}
if (!mBMapManager.init(new MyGeneralListener())) {
Toast.makeText(
BaseApplication.getInstance().getApplicationContext(),
"BMapManager!", Toast.LENGTH_LONG).show();
}
}
public static class MyGeneralListener implements MKGeneralListener {
@Override
public void onGetPermissionState(int iError) {
if (iError != 0) {
} else {
}
}
}
}
④ android百度地圖 怎樣在剛進入地圖時顯示當地城市
你手機開了GPS定位地理位置
⑤ 如何在android手機上顯示自己的地圖並實現定位
這個地圖是買手機自帶的話一般只能用原機的導航軟體!或者考慮用用別的軟體試試!我用的是導航犬!這個有語音提示感覺用著不錯!也很精確!不妨試試!網上還有用高德地圖的!
⑥ android怎麼實現百度地圖標記多個地方
//獲取經緯度
double latitude = latLng.latitude;
double longitude = latLng.longitude;
System.out.println("latitude=" + latitude + ",longitude=" + longitude);
//先清除圖層
mBaiMap.clear();
// 定義Maker坐標點
LatLng point = new LatLng(latitude, longitude);
// 構建MarkerOption,用於在地圖上添加Marker
MarkerOptions options = new MarkerOptions().position(point)
.icon(bitmap);
// 在地圖上添加Marker,並顯示
mBaiMap.addOverlay(options);
// 在地圖上添加Marker數組,並顯示
//mBaiMap.addOverlays(overlayOptionses);
⑦ 高德地圖,android開發中,怎麼用經緯度來顯示地圖
首先創建工程,並在工程Build Path>Configure Build Path…>libraries 中選擇「Add Externel JARs…」,選定
MapApi.jar,點擊OK,這樣就可以將高德地圖Android API 庫文件引入。然後在工程Build Path>Configure Build
Path…>Order and Export 中將引入的庫文件MapApi.jar 選中,點擊OK,這樣您就可以在您的程序中使用高德地圖API
了。
二、我們在不熟悉的情況下、先盡量多的添加此軟體應用許可權;所以在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中添加界面布局了。其代碼如下、你可以完全復制進去。
Java代碼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/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="http://schemas.android.com/apk/res/android"
android:layout_gravity="center_horizontal">
<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/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>
四、最後就是軟體的主程序部分了、裡面需要的類和方法不多,主要以按鈕的監聽器和地圖的界面實現為主
Java代碼
public void onCreate(Bundle savedInstanceState) {
// this.setMapMode(MAP_MODE_VECTOR);//設置地圖為矢量模式
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mMapView = (MapView) findViewById(R.id.mapView);
mMapView.setBuiltInZoomControls(true); // 設置啟用內置的縮放控制項
mMapController = mMapView.getController(); // 得到mMapView
// 的控制權,可以用它控制和驅動平移和縮放
point = new GeoPoint((int) (39.982378 * 1E6), (int) (116.304923 * 1E6)); // 用給定的經緯度構造一個GeoPoint,單位是微度(度*
// 1E6)
// 按鈕添加監聽器
button_location = (Button) findViewById(R.id.location);
longitude = (EditText) findViewById(R.id.longitude);
latite = (EditText) findViewById(R.id.latitude);
locationListener = new OnClickListener() {
public void onClick(View e) {
if (e.equals(button_location)) {
// 得到文本輸入框的中經緯 度坐標值
String latStr = longitude.getText().toString();
// 將得到的字元串轉成數值
double lat = Integer.parseInt(latStr);
String lngStr = latite.getText().toString();
double lng = Integer.parseInt(lngStr);
//轉成經緯度坐標
lat=lat*1E6;
lng=lng*1E6;
// 用給定的經緯度構造一個GeoPoint,單位是微度(度*1E6)
point = new GeoPoint((int) (lat), (int) (lng));
mMapController.setCenter(point); // 設置地圖中心點
mMapController.setZoom(12); // 設置地圖zoom 級別
// 添加地圖覆蓋物
// MyLocationOverlay(this, mMapView);
mylocTest.enableMyLocation(); // 判斷是否發現位置提供者
mylocTest.enableCompass(); // 打開指南針
mMapView.getOverlays().add(mylocTest);// 添加定位覆蓋物
}
}
};
// 按鈕添加監聽器
button_location.setOnClickListener(locationListener);
mMapController.setCenter(point); // 設置地圖中心點
mMapController.setZoom(12); // 設置地圖zoom 級別
// 添加地圖覆蓋物
mylocTest = new MyLocationOverlay(this, mMapView);
mylocTest.enableMyLocation(); // 判斷是否發現位置提供者
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 LinkedList<Runnable> mRunOnFirstFix = new LinkedList<Runnable>();
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 開發地圖有哪些
Android的地圖api有很多,下面就簡單的說下常見的幾款。
網路地圖:在開發中也是用的最多的。地圖更新比較快,功能齊全,使用也挺簡單。還有demo,文檔也很豐富。
高德地圖:功能也很全,感覺不一樣的地方就是地圖載入很快,UI更加清新。導航很強大。而且高德API的論壇挺專業的。
Google地圖:ui很簡約。功能那當然不用說了。但是你懂得,在我朝支持有的時候無法響應。所以只能放棄。
最後騰訊地圖、搜狗地圖、老虎地圖等等就不多說了
⑨ 安卓系統用的地圖
去裝一個凱立德破解版,那個可以,不需要網路就能找到,而且還可以導航
⑩ android 地圖定位 哪個好
個人使用的是高德,感覺還算可以。