关于百度地图的简单开发前段时间,写过一个小系列的博客关于百度地图的基本地图,定位,全景,导航等功能做了简单的介绍.从今天开始又将准备一期有关百度地图的POI检索的等一列查询功能,如城市检索,周边检索,区域检索;公交地铁查询;线路规划检索等.今天首先来第一波就是基于百度地图的API实现公交地铁线路查询.那么就开始这次再续前缘之第一篇公交地铁线路查询.

公交地铁线路查询可以说在生活当中非常的实用,乃至更高级一点的实时公交查询,使得人们的生活出行变得更加方便快捷.实际上实现公交地铁线路的查询比较简单.原理上也是非常清晰的.但是必须先明白一个知识就是POI,什么是POI英文名称是Point of Interest,即兴趣点.这个具体有什么作用了.可以说百度地图中的很多功能的数据都来自它;比如周边搜索,地点搜索,线路搜索,公交地铁查询,周边雷达等功能.POI个人理解就是在地理信息系统的一个关键点,它可以是一栋房子,一棵树,一个公交站台等.而POI实际上有个库,里面有许许多多不同类型的POI点的信息数据,而POI检索就类似百度搜索中关键字搜索,输入某个关键字,然后就返回一连串与之相关数据信息.所以也很明白这个POI库并不是哪家公司就能建立的,但是百度和Google可以,别忘了他们可是搜索引擎中的老大,以至于建立这个庞大的POI库相对其他公司有着特别优势.POI中传入一些关键字,就会返回一些与之相关的poi点对象,该对象中封装了相应点数据信息.然后我们就会在这些不同类型的POI中去筛选我们所需要的poi即可.

实现的大致思路:

通过上面的有关POI一些介绍,相信对POI有了一个初步认识.有了初步认识就可以.思路就是创建一个POISearch对象,用于发起POI检索请求,请求中传入相关的关键字作为请求参数,然后给该对象设置一个OnGetPoiSearchResultListener(POI检索结果监听器)主要是用于返回监听到的POI数据信息,如果有POI数据返回就会在监听事件中产生一个回调返回检索到的结果.实际上到了这一步就类似上面所说的返回一些相关不同类型的POI,然后通过筛选,得到BusLine(公交线路类型的POI和地铁类型的POI),然后这些poi中会携带一个uid(这个很关键呀),只要拿到线路的uid就已经成功一半了,然后再去创建一个BusLineSearch对象,用于查询公交和地铁线路信息,并传入上面的得到的uid,并且也需要给该对象设置一个OnGetBusLineSearchResultListener公交信息查询结果监听器,主要用于检索公交地铁线路信息,如果检索成功会通过回调方法返回检索的结果.拿到返回的结果就可以创建一个BuslineOverlay,用于显示公交线路或地铁线路的图层.

一,创建PoiSearch对象并给该对象设置OnGetPoiSearchResultListener监听器:

 poiSearch=PoiSearch.newInstance();//创建POI兴趣点检索对象poiSearch.setOnGetPoiSearchResultListener(poiSearchResultListener);//并且给该对象设置监听器,如果有结果返回就立即触发该回调方法返回兴趣点的uid集合
/*** POI检索结果监听器*/OnGetPoiSearchResultListener    poiSearchResultListener =new OnGetPoiSearchResultListener() {@Overridepublic void onGetPoiResult(PoiResult poiResult) {if (poiResult == null|| poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {// 没有找到检索结果Toast.makeText(BusSearchActivity.this, "未找到结果",Toast.LENGTH_LONG).show();return;}if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {// 检索到结果正常返回// 遍历所有poi,找到类型为公交线路的poibusLineUidList.clear();//先清空一下该uid集合,因为可能留有上一次中的数据for (PoiInfo poi : poiResult.getAllPoi()) {//遍历返回的所有的poi,这其中的poi有很多类型,很多数据就好比关键字搜索返回多种多样数据结果一样,并且返回的POI中还会带有一个uid,if (poi.type == PoiInfo.POITYPE.BUS_LINE|| poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {//先在众多类型的数据中,筛选出公交线路类型,地铁线路类型busLineUidList.add(poi.uid);//然后在到筛选得到的poi中取出uid,并加入到公交线路集合中去}}searchBusline();}}

二,创建BusLineSearch对象并给该对象设置OnGetBusLineSearchResultListener监听器:

 /*** 公交信息查询结果监听器*/OnGetBusLineSearchResultListener busLineSearchResultListener=new OnGetBusLineSearchResultListener() {@Overridepublic void onGetBusLineResult(BusLineResult busLineResult) {if (busLineResult.error == SearchResult.ERRORNO.NO_ERROR) {//表示得到结果类型是NO_ERROR,没有错误,就说明返回了公交线路的信息rLayout.setVisibility(View.VISIBLE);myBaiduMap.clear();BusLineOverlay overlay = new MyBuslineOverlay(myBaiduMap);// 用于显示一条公交详情结果的Overlay,定义一个公交线路的图层用于显示公交线路overlay.setData(busLineResult);overlay.addToMap();// 将overlay添加到地图上overlay.zoomToSpan();// 缩放地图,使所有overlay都在合适的视野范围内myBaiduMap.setOnMarkerClickListener(overlay);// 公交线路名称stations=  busLineResult.getStations();//通过getStations方法可以得到该条公交线路中途径的所有的站台/*  for (int i=0;i<stations.size();i++) {toast("第"+(i+1)+"站: "+stations.get(i).getTitle());}toast("线路:"+busLineResult.getBusLineName()+"   首班车时间:"+busLineResult.getStartTime()+" 末班车时间:"+busLineResult.getEndTime());*/} else {//否则提示未找到结果Toast.makeText(BusSearchActivity.this, "抱歉,未找到结果",Toast.LENGTH_SHORT).show();}}};

三,搜索公交地铁线路方法:(注意:这里有个cityName是前面通过定位得到的城市名,也就是说自动默认为你查询你所处的城市的公交路线)

 /*** @author mikyou* 搜索公交线路* */private void searchBusline() {if (buslineIndex >= busLineUidList.size()) {//表示上一次的数据buslineIndex没有清空,所以就对buslineIndex进行初始化buslineIndex = 0;}if (buslineIndex >= 0 && buslineIndex < busLineUidList.size()&& busLineUidList.size() > 0) {//下面表示如果检索到了相应的公交线路,就返回true,否则返回false;这里的cityName就是传入的城市名,//cityName是通过MainActivity中的定位得到城市,所以也就实现了默认查询你所处城市的公交路线,//uid就传入通过poiSearch检索到的兴趣点中并筛选出的公交或地铁类型的uid,然后就通过OnGetBusLineSearchResultListener监听器//如果监听有公交线路信息,就返回一个true boolean flag = busLineSearch.searchBusLine((new BusLineSearchOption().city(cityName).uid(busLineUidList.get(buslineIndex))));if (flag) {Toast.makeText(BusSearchActivity.this, "检索成功~", 1000).show();} else {Toast.makeText(BusSearchActivity.this, "检索失败~", 1000).show();}buslineIndex++;}}

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="#FFF"android:padding="10dp" ><ImageViewandroid:id="@+id/search_back"android:layout_width="20dp"android:layout_height="20dp"android:layout_alignParentLeft="true"android:layout_centerVertical="true"android:scaleType="center"android:src="@drawable/search_back" /><EditTextandroid:id="@+id/search_content"android:layout_width="220dp"android:layout_height="40dp"android:layout_centerVertical="true"android:layout_marginLeft="10dp"android:layout_toRightOf="@+id/search_back"android:background="@drawable/edit_bg"android:drawableLeft="@drawable/search2"android:drawablePadding="5dp"android:hint="搜地铁、搜公交"android:textSize="16sp"android:textColor="#bbcccccc"android:textColorHint="#aacccccc"android:padding="10dp" /><Buttonandroid:id="@+id/ok_btn"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginLeft="10dp"android:layout_marginRight="5dp"android:layout_toRightOf="@+id/search_content"android:background="@drawable/button_bg"android:text="确定"android:textColor="#FFF"android:textSize="18sp" /></RelativeLayout><RelativeLayoutandroid:id="@+id/rl"android:layout_width="match_parent"android:layout_height="match_parent" android:visibility="invisible"><com.baidu.mapapi.map.MapViewandroid:id="@+id/mapview"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_centerInParent="true"android:clickable="true" /><LinearLayoutandroid:layout_width="40dp"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentLeft="true"android:layout_marginBottom="120dp"android:layout_marginLeft="10dp"android:background="#FFF"android:orientation="vertical"android:paddingLeft="5dp"android:paddingRight="5dp" ><ImageViewandroid:id="@+id/add_scale"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:paddingBottom="12dp"android:paddingLeft="8dp"android:paddingRight="8dp"android:paddingTop="12dp"android:src="@drawable/ic_track_explore_zoomin_focus" /><Viewandroid:layout_width="match_parent"android:layout_height="0.1dp"android:background="#22000000" /><ImageViewandroid:id="@+id/low_scale"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:paddingBottom="12dp"android:paddingLeft="8dp"android:paddingRight="8dp"android:paddingTop="12dp"android:src="@drawable/ic_track_explore_zoomout_dis" /></LinearLayout><ImageViewandroid:id="@+id/my_location"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentLeft="true"android:layout_marginBottom="60dp"android:layout_marginLeft="10dp"android:background="#FFF"android:padding="10dp"android:src="@drawable/main_icon_location" /><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_marginRight="10dp"android:layout_marginTop="60dp"android:orientation="vertical" ><ImageViewandroid:id="@+id/road_condition"android:layout_width="40dp"android:layout_height="40dp"android:background="@drawable/add_poi_map_selection_btn_pressed"android:scaleType="centerInside"android:src="@drawable/main_icon_roadcondition_off" /><ImageViewandroid:id="@+id/map_type"android:layout_width="40dp"android:layout_height="40dp"android:layout_marginTop="10dp"android:background="@drawable/add_poi_map_selection_btn_pressed"android:scaleType="centerInside"android:src="@drawable/main_icon_maplayers" /><ImageViewandroid:id="@+id/map_panorama"android:layout_width="40dp"android:layout_height="40dp"android:layout_marginTop="10dp"android:background="@drawable/add_poi_map_selection_btn_pressed"android:scaleType="centerInside"android:src="@drawable/main_map_icon_streetscape_selected" /></LinearLayout></RelativeLayout></LinearLayout>

源码:

package com.zhongqihong.mymap;import java.util.ArrayList;
import java.util.List;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.overlayutil.BusLineOverlay;
import com.baidu.mapapi.search.busline.BusLineResult;
import com.baidu.mapapi.search.busline.BusLineResult.BusStation;
import com.baidu.mapapi.search.busline.BusLineSearch;
import com.baidu.mapapi.search.busline.BusLineSearchOption;
import com.baidu.mapapi.search.busline.OnGetBusLineSearchResultListener;
import com.baidu.mapapi.search.core.PoiInfo;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
import com.baidu.mapapi.search.poi.PoiCitySearchOption;
import com.baidu.mapapi.search.poi.PoiDetailResult;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import android.widget.ZoomControls;
/*** @author mikyou* 公交线路查询* */
public class BusSearchActivity extends Activity implements OnClickListener{private MapView myMapView;private View defaultBaiduMapScaleButton=null;private View defaultBaiduMapLogo=null;private View defaultBaiduMapScaleUnit=null;private ImageView mapRoad,selectMapType,mapPanorama;private ImageView addScale,lowScale;private BaiduMap myBaiduMap;private String[] types={"普通地图","卫星地图","热力地图(已关闭)"};private float current;private EditText searchContent;private Button searchButton;private String cityName;//城市名private String busLine;//公交路线private List<String> busLineUidList;//公交路线的uid集合private int buslineIndex = 0;// 标记第几个路线private List<BusStation>stations;//用于存放某条公交线路中的所有站点信息private RelativeLayout rLayout;private PoiSearch poiSearch;private BusLineSearch busLineSearch;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_bus_search);initMapView();changeDefaultBaiduMapView();initSearchBusLine();}private void initSearchBusLine() {cityName=getIntent().getStringExtra("cityName");//这个是cityName是前面通过定位得到的城市名,也就是说自动默认为你查询你所处的城市的公交路线busLineUidList=new ArrayList<String>();poiSearch=PoiSearch.newInstance();//创建POI兴趣点检索对象poiSearch.setOnGetPoiSearchResultListener(poiSearchResultListener);//并且给该对象设置监听器,如果有结果返回就立即触发该回调方法返回兴趣点的uid集合busLineSearch=BusLineSearch.newInstance();//创建一个公交线路检索对象busLineSearch.setOnGetBusLineSearchResultListener(busLineSearchResultListener);//并且给该对象设置监听器,如果有结果返回就立即触发该回调方法,返回公交线路信息}/*** POI检索结果监听器*/OnGetPoiSearchResultListener     poiSearchResultListener =new OnGetPoiSearchResultListener() {@Overridepublic void onGetPoiResult(PoiResult poiResult) {if (poiResult == null|| poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {// 没有找到检索结果Toast.makeText(BusSearchActivity.this, "未找到结果",Toast.LENGTH_LONG).show();return;}if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {// 检索到结果正常返回// 遍历所有poi,找到类型为公交线路的poibusLineUidList.clear();//先清空一下该uid集合,因为可能留有上一次中的数据for (PoiInfo poi : poiResult.getAllPoi()) {//遍历返回的所有的poi,这其中的poi有很多类型,很多数据就好比关键字搜索返回多种多样数据结果一样,并且返回的POI中还会带有一个uid,if (poi.type == PoiInfo.POITYPE.BUS_LINE|| poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {//先在众多类型的数据中,筛选出公交线路类型,地铁线路类型busLineUidList.add(poi.uid);//然后在到筛选得到的poi中取出uid,并加入到公交线路集合中去}}searchBusline();}}@Overridepublic void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {}};/*** @author mikyou* 搜索公交线路* */private void searchBusline() {if (buslineIndex >= busLineUidList.size()) {//表示上一次的数据buslineIndex没有清空,所以就对buslineIndex进行初始化buslineIndex = 0;}if (buslineIndex >= 0 && buslineIndex < busLineUidList.size()&& busLineUidList.size() > 0) {//下面表示如果检索到了相应的公交线路,就返回true,否则返回false;这里的cityName就是传入的城市名,//cityName是通过MainActivity中的定位得到城市,所以也就实现了默认查询你所处城市的公交路线,//uid就传入通过poiSearch检索到的兴趣点中并筛选出的公交或地铁类型的uid,然后就通过OnGetBusLineSearchResultListener监听器//如果监听有公交线路信息,就返回一个true boolean flag = busLineSearch.searchBusLine((new BusLineSearchOption().city(cityName).uid(busLineUidList.get(buslineIndex))));if (flag) {Toast.makeText(BusSearchActivity.this, "检索成功~", 1000).show();} else {Toast.makeText(BusSearchActivity.this, "检索失败~", 1000).show();}buslineIndex++;}}/*** 公交信息查询结果监听器*/OnGetBusLineSearchResultListener busLineSearchResultListener=new OnGetBusLineSearchResultListener() {@Overridepublic void onGetBusLineResult(BusLineResult busLineResult) {if (busLineResult.error == SearchResult.ERRORNO.NO_ERROR) {//表示得到结果类型是NO_ERROR,没有错误,就说明返回了公交线路的信息rLayout.setVisibility(View.VISIBLE);myBaiduMap.clear();BusLineOverlay overlay = new MyBuslineOverlay(myBaiduMap);// 用于显示一条公交详情结果的Overlay,定义一个公交线路的图层用于显示公交线路overlay.setData(busLineResult);overlay.addToMap();// 将overlay添加到地图上overlay.zoomToSpan();// 缩放地图,使所有overlay都在合适的视野范围内myBaiduMap.setOnMarkerClickListener(overlay);// 公交线路名称stations= busLineResult.getStations();//通过getStations方法可以得到该条公交线路中途径的所有的站台/*  for (int i=0;i<stations.size();i++) {toast("第"+(i+1)+"站: "+stations.get(i).getTitle());}toast("线路:"+busLineResult.getBusLineName()+"   首班车时间:"+busLineResult.getStartTime()+" 末班车时间:"+busLineResult.getEndTime());*/} else {//否则提示未找到结果Toast.makeText(BusSearchActivity.this, "抱歉,未找到结果",Toast.LENGTH_SHORT).show();}}};class MyBuslineOverlay extends BusLineOverlay {public MyBuslineOverlay(BaiduMap arg0) {super(arg0);}/*** 站点点击事件*/@Overridepublic boolean onBusStationClick(int position) {//对显示在地图上的公交图层设置监听事件,position就是传入的是位置序号MarkerOptions options = (MarkerOptions) getOverlayOptions().get(position);myBaiduMap.animateMapStatus(MapStatusUpdateFactory.newLatLng(options.getPosition()));toast(stations.get(position).getTitle()+"站");//实现点击某个站点图标弹出该站点的名称return true;}}@Overrideprotected void onResume() {super.onResume();myMapView.onResume();}@Overrideprotected void onPause() {super.onPause();myMapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();poiSearch.destroy();// 释放检索对象资源busLineSearch.destroy();// 释放检索对象资源myMapView.onDestroy();}private void initMapView() {registerAllViewId();registerAllViewEvent();}private void registerAllViewEvent() {addScale.setOnClickListener(this);lowScale.setOnClickListener(this);mapRoad.setOnClickListener(this);selectMapType.setOnClickListener(this);searchButton.setOnClickListener(this);}private void registerAllViewId() {myMapView=(MapView) findViewById(R.id.mapview);addScale=(ImageView) findViewById(R.id.add_scale);lowScale=(ImageView) findViewById(R.id.low_scale);mapRoad=(ImageView) findViewById(R.id.road_condition);selectMapType=(ImageView) findViewById(R.id.map_type);searchContent=(EditText) findViewById(R.id.search_content);searchButton=(Button) findViewById(R.id.ok_btn);rLayout=(RelativeLayout) findViewById(R.id.rl);}/*** @author zhongqihong* 修改默认百度地图的View* * */private void changeDefaultBaiduMapView() {changeInitialzeScaleView();//改变默认百度地图初始加载的地图比例//设置隐藏缩放和扩大的百度地图的默认的比例按钮for (int i = 0; i < myMapView.getChildCount(); i++) {//遍历百度地图中的所有子View,找到这个扩大和缩放的按钮控件View,然后设置隐藏View即可View child=myMapView.getChildAt(i);if (child instanceof ZoomControls) {defaultBaiduMapScaleButton=child;//该defaultBaiduMapScaleButton子View是指百度地图默认产生的放大和缩小的按钮,得到这个Viewbreak;}}defaultBaiduMapScaleButton.setVisibility(View.GONE);//然后将该View的Visiblity设为不存在和不可见,即隐藏defaultBaiduMapLogo =myMapView.getChildAt(1);//该View是指百度地图中默认的百度地图的Logo,得到这个ViewdefaultBaiduMapLogo.setPadding(300, -10, 100, 100);//设置该默认Logo View的位置,因为这个该View的位置会影响下面的刻度尺单位View显示的位置myMapView.removeViewAt(1);//最后移除默认百度地图的logo ViewdefaultBaiduMapScaleUnit=myMapView.getChildAt(2);//得到百度地图的默认单位刻度的ViewdefaultBaiduMapScaleUnit.setPadding(100, 0, 115,200);//最后设置调整百度地图的默认单位刻度View的位置}private void changeInitialzeScaleView() {myBaiduMap=myMapView.getMap();//改变百度地图的放大比例,让首次加载地图就开始扩大到500米的距离MapStatusUpdate factory=MapStatusUpdateFactory.zoomTo(15.0f);myBaiduMap.animateMapStatus(factory);       }@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.road_condition:if (myBaiduMap.isTrafficEnabled()) {myBaiduMap.setTrafficEnabled(false);mapRoad.setImageResource(R.drawable.main_icon_roadcondition_off);}else{myBaiduMap.setTrafficEnabled(true);mapRoad.setImageResource(R.drawable.main_icon_roadcondition_on);}break;case R.id.add_scale:current+=0.5f;MapStatusUpdate factory=MapStatusUpdateFactory.zoomTo(15.0f+current);myBaiduMap.animateMapStatus(factory);//设置百度地图的缩放效果动画animateMapStatusbreak;case R.id.low_scale:current-=0.5f;MapStatusUpdate factory2=MapStatusUpdateFactory.zoomTo(15.0f+current);myBaiduMap.animateMapStatus(factory2);break;case R.id.map_type:AlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setIcon(R.drawable.icon).setTitle("请选择地图的类型").setItems(types, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String select=types[which];if (select.equals("普通地图")) {             myBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);}else if (select.equals("卫星地图")) {myBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);}else if (select.equals("热力地图(已关闭)")||select.equals("热力地图(已打开)")) {if(myBaiduMap.isBaiduHeatMapEnabled()) {myBaiduMap.setBaiduHeatMapEnabled(false);Toast.makeText(BusSearchActivity.this, "热力地图已关闭", 0).show();types[which]="热力地图(已关闭)";}else {myBaiduMap.setBaiduHeatMapEnabled(true);Toast.makeText(BusSearchActivity.this, "热力地图已打开", 0).show();types[which]="热力地图(已打开)";}}}}).show();break;case R.id.ok_btn:busLine=searchContent.getText().toString();poiSearch.searchInCity(new PoiCitySearchOption().city(cityName).keyword(busLine));break;default:break;}}private void toast(String str) {Toast.makeText(BusSearchActivity.this, str, 0).show();}}

实现的效果:

       

demo使用注意:查询时查询的方式用"的"关键字隔开城市名和公交或地铁线路名,如:北京的地铁一号线,北京的211路.

点击下载Demo

浅谈百度地图的简单开发再续前缘之公交,地铁路线检索查询(六)相关推荐

  1. 浅谈百度地图的简单开发最后收官之实现导航功能(五)

    这篇是高仿百度地图的最后一篇了,今天主要来实现百度地图的导航的功能,并且该导航还自带语音播报功能,然后最后对整个百度地图开发过程遇到的问题进行一些列举,并给出一些解决的办法,可能总结的不是很齐全,希望 ...

  2. 浅谈百度地图的简单开发之实现地图全景,内景展示功能(四)

    今天,我就接着来浅谈一下关于百度地图的内景,外景的展示功能.今天具体要实现的功能就是输入该地点的名称然后就展示该地点的内景图片,有内景就展示内景,没有则显示该地点的街景,该功能是参考百度地图官方的AP ...

  3. 浅谈百度地图的简单开发之引入基本地图以及修改地图样式(一)

    今天,想给大家带来一个基于百度地图官方开放的API开发的高仿百度地图的Demo(还称不上是一个APP),基本实现了百度地图的几大核心功能,百度地图中的基本地图,百度地图的定位,百度地图的全景显示,百度 ...

  4. 浅谈百度地图的简单开发之结合方向传感器实现定位功能(三)

    今天我们来谈下百度地图的定位功能,在此之前我已经将百度地图的基本地图大概说了下,其实百度地图的基本功能还有很多的内容.感兴趣的可以到百度地图的开发者的官网看看.今天就开始来讲下百度地图中的定位功能. ...

  5. 浅谈百度地图的简单开发之实现基本地图的类型及覆盖物的添加(二)

    今天,我们接着上一讲,上一讲我们把地图上界面自定义了一番,加上了按钮等一系列的控件,但是还没有给这些加上具体的功能,今天这一讲,主要是实现几种地图的切换,是否开启实时交通,通过自定义的按钮去控制地图的 ...

  6. java百度地图路线规划_浅谈百度地图WEB开发中的四种路线规划

    百度地图在3.0的Javascript api中增加了四种路径规划,分别是:步行.骑行.自驾.公交. 关于路线规划的引用也相当简单,我们以步行为例://实例化地图 var map = new BMap ...

  7. 百度地图的简单开发之方向传感器实现定位功能

    今天我们来谈下百度地图的定位功能,在此之前我已经将百度地图的基本地图大概说了下,其实百度地图的基本功能还有很多的内容.感兴趣的可以到百度地图的开发者的官网看看.今天就开始来讲下百度地图中的定位功能. ...

  8. iOS开发之百度地图的简单集成——标注POI检索

    iOS开发之百度地图的简单集成--标注&POI检索 .h文件 // Created by XK_Recollection on 16/6/15. // Copyright © 2016年 GN ...

  9. catia三维轴承_浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文

    浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文 一.概述 单排四点接触球转盘轴承是一种能够同时承受较大轴向负荷.径向负荷和倾覆力矩等综合载荷,集支承.旋转.传动.固定等多种功能于一身的特殊 ...

最新文章

  1. Python 将数据框类型转为字典类型
  2. 滴滴联合比亚迪:首款定制网约车D1发布
  3. 微信新版支持读取iPhone M7/M8协处理器运动数据 与好友PK一下运动量吧
  4. fastdfs安装_用asp.net core结合fastdfs打造分布式文件存储系统
  5. tensorflow实战google深度学习框架在线阅读
  6. 从全职高手开始的系统_《全职高手》让杨洋“去油”,却不是他的“救命稻草”...
  7. Tomcat的web项目部署方式
  8. 线程池的submit和execute方法区别
  9. 远程控制软件 mRemoteNG,管理多台虚拟机
  10. php 按行读取 太慢,3分钟短文 | 大神救我!18G的大文件,PHP咋按行读取?
  11. JAVA作业 17-05-18
  12. TransE算法原理与代码解析(2021-06-22)
  13. 钢铁企业的能耗管理现状和管理建议
  14. 计算机网络hdcp是什么意思,HDCP技术_百科..doc
  15. php 0x80004005,解决Access出现Microsoft JET Database Engine (0x80004005)未指
  16. 如何解读羊毛出在了猪身上的保理业务?
  17. 前端html网站的发布过程
  18. 用python做飞机大战打到不同部位扣分不同_python制作飞机大战需要哪些python术语...
  19. 81岁院士四次创业:创业比科研更难!
  20. SCON:串行控制寄存器 之 格式

热门文章

  1. 系统集成项目管理工程师案例分析考点汇总(范围管理)
  2. MVC 、MVP、MVVM
  3. PostgreSQL 14分布式Citus单机多实例部署
  4. 年轻CEO自杀离世,杠杆之殇背后的故事
  5. PTA-python练习题-2(简单的计算及输入输出①)
  6. Windows系统中vscode+MSVC的C++配置
  7. 解决git错误: error: The following untracked working tree files would be overwritten by merge
  8. 2019年 团体程序设计天梯赛——题解集
  9. vw 前端_Vw / Vh 更好的做前端适配
  10. LabVIEW控制Arduino采集光敏电阻数值(基础篇—14)