注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

Android应用使用百度地图API及API开发指南  

2012-12-13 18:43:33|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

简介什么是百度地图API?

百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富、交互性强的地图应用。百度地图API包含了构建地图基本功能的各种接口,提供了诸如本地搜索、路线规划等数据服务。

面向的读者

API是提供给那些具有一定JavaScript编程经验和了解面向对象概念的读者使用。此外,读者还应该对地图产品有一定的了解。

您在使用中遇到任何问题,都可以通过API贴吧或交流群反馈给我们。

获取API

地图API是由JavaScript语言编写的,您在使用之前需要通过<script>标签将API引用到页面中:

  1. <script src="http://api.map.baidu.com/api?v=1.2" type="text/javascript"></script> 

其中参数v为API当前的版本号,目前最新版本为1.2。在1.2版本之前您还可以设置services参数,以告知API是否加载服务部分,true表示加载,false表示不加载,默认为true。

开发移动平台上的地图应用

API自1.1版本起开始支持iPhone、Android这样的移动平台。用户通过手机浏览器就可以访问由地图API创建出来的应用。移动平台的屏幕尺寸通常比PC或笔记本要小,操作方式也有所不同。为了更好的在手机浏览器上展示地图,我们有如下建议:

将地图容器高设置为100%,使其充满整个屏幕,或者您也可以计算浏览器窗口的大小并进行设置。添加下面的meta标签: <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />这样做是为了让页面以正常比例进行显示并且禁止用户缩放页面的操作。

您可以参考 Apple's Developer documentation 和 Android documentation 获得更多信息。

异步加载

API 1.1和1.2版本支持异步加载,您可以在引用脚本的时候添加callback参数,当脚本加载完成后callback函数会被立刻调用。请参考下面的使用示例:

  1. <!DOCTYPE html> 
  2. <html><head><meta charset="utf-8"/><title>异步加载</title>
  3. <script type="text/javascript">function initialize() {   
  4. var mp = new BMap.Map('map');   
  5. mp.centerAndZoom(new BMap.Point(121.491, 31.233), 11);}function loadScript() {   
  6. var script = document.createElement("script");   
  7. script.src = "http://api.map.baidu.com/api?v=1.2&callback=initialize";   
  8. document.body.appendChild(script);}window.onload = loadScript;</script></head><body> 
  9.  <div id="map" style="width:500px;height:320px"></div> 
  10. </body></html>兼容性 

浏览器:IE 6.0+、Firefox 3.6+、Opera 9.0+、Safari 3.0+、Chrome

操作系统:Windows、Mac、Linux

移动平台:iPhone、Android

版本说明

地址 http://api.map.baidu.com/api?v=1.2 中的参数v表示您加载API的版本,例如当前API的最新版本为1.2,则您可在地址中添加 v=1.2。当API升级后,如果已有接口在使用、命名等方面发生了变化,我们会为其增加一个新的版本号,这不会对您现有的应用造成任何影响。如果升级只是修复一些bug或者在不影响现有功能的前提下增加接口、改善性能,则版本号不会发生变化。您可以在更新日志页面查看版本的变化。

1)下载百度地图移动版API(Android)开发包
      要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件:baidumapapi.jar和libBMapApiEngine.so。下载地址:http://dev.baidu.com/wiki/static/imap/files/BaiduMapApi_Lib_Android_1.0.zip

2)申请API Key
      和使用Google map api一样,在使用百度地图API之前也需要获取相应的API Key。百度地图API Key与你的百度账户相关联,因此您必须先有百度帐户,才能获得API Key;并且,该Key与您引用API的程序名称有关。
      百度API Key的申请要比Google的简单多了,其实只要你有百度帐号,应该不超过30秒就能完成API Key的申请。申请地址:http://dev.baidu.com/wiki/static/imap/key/

3)创建一个Android工程
      这里需要强调一点:百度地图移动版api支持Android 1.5及以上系统,因此我们创建的工程应基于Android SDK 1.5及以上。
      工程创建完成后,将baidumapapi.jar和libBMapApiEngine.so分别拷贝到工程的根目录及libs/armeabi目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定baidumapapi.jar,这样就可以在应用中使用百度地图API了。工程完整的目录

工程完整的目录结构如下图所示:

Android应用使用百度地图API及API开发指南 - 天涯草 - 天涯草
 

4)在布局文件中添加地图控件(res/layout/main.xml)

<?xmlversion="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"     >     <com.baidu.mapapi.MapView android:id="@+id/map_View"         android:layout_width="fill_parent"         android:layout_height="fill_parent"         android:clickable="true"     /> </LinearLayout> 

5)创建Activity继承com.baidu.mapapi.MapActivity

package com.liufeng.baidumap;  import android.graphics.drawable.Drawable; import android.os.Bundle;  import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.GeoPoint; import com.baidu.mapapi.MapActivity; import com.baidu.mapapi.MapController; import com.baidu.mapapi.MapView;  public class MainActivity extends MapActivity {  private BMapManager mapManager;  private MapView mapView;  private MapController mapController;   @Override  public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);    // 初始化MapActivity   mapManager = new BMapManager(getApplication());   // init方法的第一个参数需填入申请的API Key   mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4", null);   super.initMapActivity(mapManager);    mapView = (MapView) findViewById(R.id.map_View);   // 设置地图模式为交通地图   mapView.setTraffic(true);   // 设置启用内置的缩放控件   mapView.setBuiltInZoomControls(true);    // 用给定的经纬度构造一个GeoPoint(纬度,经度)   GeoPoint point = new GeoPoint((int) (47.118440 * 1E6), (int) (87.493147 * 1E6));    // 创建标记maker   Drawable marker = this.getResources().getDrawable(R.drawable.iconmarka);   // 为maker定义位置和边界   marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());    // 取得地图控制器对象,用于控制MapView   mapController = mapView.getController();   // 设置地图的中心   mapController.setCenter(point);   // 设置地图默认的缩放级别   mapController.setZoom(12);  }   @Override  protected boolean isRouteDisplayed() {   return false;  }   @Override  protected void onDestroy() {   if (mapManager != null) {    mapManager.destroy();    mapManager = null;   }   super.onDestroy();  }   @Override  protected void onPause() {   if (mapManager != null) {    mapManager.stop();   }   super.onPause();  }   @Override  protected void onResume() {   if (mapManager != null) {    mapManager.start();   }   super.onResume();  } }


6)在AndroidManifest.xml中配置


<?xmlversion="1.0"encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"       package="com.liufeng.baidumap"       android:versionCode="1"       android:versionName="1.0">     <application android:icon="@drawable/icon" android:label="@string/app_name">         <activity android:name=".MainActivity" android:label="@string/app_name">             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                 <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>     </application>      <uses-sdk android:minSdkVersion="4" />     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />     <uses-permission android:name="android.permission.INTERNET" />     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />     <uses-permission android:name="android.permission.READ_PHONE_STATE" /> </manifest>
Android应用使用百度地图API及API开发指南 - 天涯草 - 天涯草
 
说明:上面的应用只是简单的展示了百度地图(交通地图),并将一个指定的点(根据经纬度确定)展示在手机屏幕的中心。当然,实际项目中涉及的map应用不会这么简单,百度地图API为我们提供了丰富的功能接口,有待我们一起去研究学习。
  评论这张
 
阅读(1776)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016