android开发之学会使用百度地图

来源:互联网 发布:淘宝 搜索 黑技术 编辑:程序博客网 时间:2024/05/23 02:01

使用地图的目的

现在开发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;@Overrideprotected 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的使用,把下图中的红框内容看一遍基本就差不多了,然后就是不断使用直到熟练运用它。


      
源代码下载,请点击这里


















0 0
原创粉丝点击