使用地图的目的
现在开发android应用,许多时候都会遇到要使用地图,因此,掌握地图的开发是必须的。我也一直想学学如何使用地图,于是趁有时间,就认真学了一遍使用地图。呵呵,感觉蛮爽。下面我们就以百度地图的使用为例,讲解如何使用地图。
准备工作
使用百度地图前先要申请密钥(API Key)
打开电脑浏览器:百度首页更多-->站长与开发者服务(APIStore 点击进入)-->地图-->百度地图-->进入官网【
http://developer.baidu.com/map/】
在这个官网,我们先要注册成为开发者,然后才能申请密钥,申请密钥在官网首页的最下面,看到了点击,然后进入:
创建应用点击之后,会有空让我们填。应用名称随便填(最好填新建的android项目名 如helloworld),应用类型选择Android SDK。最重要的就是安全码填写,它由【数字签名;包名】这种格式组成。数字签名:点击eclipse中的Window-->Preferences
箭头所指的SHA1后面的一串字符就是我们需要的数字签名,包名就是andorid项目AndroidManifest.xml中package后面的一串字符:
填好之后就能获得百度地图的密钥(API Key 简称AK),如下图:
密钥搞定,再去把百度地图Android SDK下载,放到项目中就可以进行百度地图的开发了。
下载百度地图Android SDK
还是在:百度首页更多-->站长与开发者服务(APIStore 点击进入)-->地图-->百度地图-->进入官网【
http://developer.baidu.com/map/】,官网下面有一个Android开发,点击SDK下载:
SDK开发包的功能可自由组合,我就选了一个基础地图--->点击开发包-->然后就下了。解压缩会有一个libs文件夹,里面文件位置别动,就按这个位置放到android项目中的libs包下SDK就导入成功了。
————>
然后,我们就可以顺利的使用百度地图开发啦!
使用百度地图
1.在AndroidManifest.xml中添加开发秘钥和所需权限。
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="填写你申请的AK" />
权限:
<!-- 百度API所需权限 -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
2. 在布局文件中添加地图控件:
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
3.修改MainActivity.java
package com.example.maptest;
import java.util.ArrayList;
import java.util.List;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMap.OnMapDrawFrameCallback;
import com.baidu.mapapi.map.BaiduMap.OnMarkerDragListener;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.Stroke;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.model.LatLng;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
public class MainActivity extends Activity {
MapView mMapView = null;
BaiduMap mBaiduMap = null;
Marker marker = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//显示普通2D图
//mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);//显示卫星图
//mBaiduMap.setTrafficEnabled(true);//开启交通图
//mBaiduMap.setBaiduHeatMapEnabled(true);//开启百度热力图
LatLng point = new LatLng(39.963175, 116.400244);//定义marker坐标
BitmapDescriptor bitmap1 = BitmapDescriptorFactory
.fromResource(R.drawable.zzlx1);//构建一个位图marker图标
BitmapDescriptor bitmap2 = BitmapDescriptorFactory
.fromResource(R.drawable.zzlx2);
BitmapDescriptor bitmap3 = BitmapDescriptorFactory
.fromResource(R.drawable.zzlx3);
//OverlayOptions option = new MarkerOptions()
//.position(point).icon(bitmap);//构建一个MarkerOption对象
//mBaiduMap.addOverlay(option);//在百度地图上添加marker,并显示
//OverlayOptions option = new MarkerOptions()
//.position(point).icon(bitmap).zIndex(9).draggable(true);
//mBaiduMap.addOverlay(option);
//自v3.3.0版本起,SDK提供了给Marker增加帧动画的能力,具体实现方法如下:
// ArrayList<BitmapDescriptor> giflist = new
// ArrayList<BitmapDescriptor>();
// giflist.add(bitmap1);
// giflist.add(bitmap2);
// giflist.add(bitmap3);
//
// OverlayOptions option = new MarkerOptions()
// .position(point).icons(giflist).draggable(true)
// .zIndex(9).period(6);
// mBaiduMap.addOverlay(option);
//几何图形覆盖物(多边形 为例)
// LatLng pt1 = new LatLng(39.93923, 116.357428);
// LatLng pt2 = new LatLng(39.91923, 116.327428);
// LatLng pt3 = new LatLng(39.89923, 116.347428);
// LatLng pt4 = new LatLng(39.89923, 116.367428);
// LatLng pt5 = new LatLng(39.91923, 116.387428);
// List<LatLng> pts = new ArrayList<LatLng>();
// pts.add(pt1);
// pts.add(pt2);
// pts.add(pt3);
// pts.add(pt4);
// pts.add(pt5);
// //构建用户绘制多边形的Option对象
// OverlayOptions polygonOption = new PolygonOptions()
// .points(pts).stroke(new Stroke(5, 0xAA00FF00)).fillColor(0XAAFFFF00);
// mBaiduMap.addOverlay(polygonOption);//百度地图绘制多边形,并显示
//文字覆盖物
LatLng text = new LatLng(39.86923, 116.397428);
OverlayOptions textOption = new TextOptions()
.bgColor(0xaaffff00).fontSize(24).fontColor(0xffff00ff)
.text("此树是我栽,此路是我开!").rotate(-30).position(text);
mBaiduMap.addOverlay(textOption);
}
}
4.运行程序,就可以看到百度地图的一些效果啦!
注意:MainActivity.java中这些代码都是我按照百度的范例写的,你也可以只在MainActivity.java中添两行代码运行程序看效果:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapView);
}
补充:
(1)这里我只简单的学习了百度地图,要想熟练使用,还需多多实战才行!
(2)没事一步一步学,网址:
百度地图SDK的使用,把下图中的红框内容看一遍基本就差不多了,然后就是不断使用直到熟练运用它。