This article can realize Baidu bus line search, you can select more than one line, the specific implementation code as follows:
First, the bus route details search
The details of the bus line are mainly divided into two steps, 1. Get the uid,2 of the bus line. Get the details of the bus line by UID.
1. Get the UID of the bus line:
* * Obtain the UID of the bus route map and initiate the search for details of the bus line based on the UID
* * @see *
Com.baidu.mapapi.mksearchlistener#ongetpoiresult ( Com.baidu.mapapi
*. Mkpoiresult, int, int)
*
/@Override public
void Ongetpoiresult (Mkpoiresult arg0, int arg1, int arg2) {
/ /TODO auto-generated Method Stub
if (arg0 = null | | | arg2!= 0) {
toast.maketext (mainactivity.this, "No results found", 1) ;
return;
}
Define a bus line description class
mkpoiinfo mkpoiinfo = null;
Get this time love you the total site of the bus line
int totalpoinum = Arg0.getnumpois ();
for (int i = 0; i < Totalpoinum i++) {
mkpoiinfo = Arg0.getpoi (i);
if (Mkpoiinfo.epoitype = = 2) {break
;
}
}
Mksearch.buslinesearch ("Kaifeng", Mkpoiinfo.uid);
}
2. Get Bus line details:
* *
to obtain details of the bus route map * *
@see *
com.baidu.mapapi.mksearchlistener#ongetbusdetailresult (com.baidu).
* Mapapi. Mkbuslineresult, int)
*
/@Override public
void Ongetbusdetailresult (Mkbuslineresult arg0, int arg1) {
//TODO auto-generated method Stub
if (arg0 = null | | | arg1!= 0) {
toast.maketext (mainactivity.this, "no Knot found Fruit ", 1);
return;
}
Routeoverlay routeoverlay = new Routeoverlay (mainactivity.this,
mapview);
Routeoverlay.setdata (Arg0.getbusroute ())//Get Bus line
mapview.getoverlays (). Clear ()//clearly identify
the bus site Mapview.getoverlays (). Add (routeoverlay);
Mapview.invalidate ();
Use animated form to describe the bus site
mapview.getcontroller (). Animateto (Arg0.getbusroute (). Getstart ());
When querying, just provide city name and line
Mksearch.poisearchincity ("Kaifeng", "3");
Complete code:
Package com.arlen.android.baidumap08;
Import Android.os.Bundle;
Import Android.view.Menu;
Import Android.widget.Toast;
Import Com.baidu.mapapi.BMapManager;
Import Com.baidu.mapapi.MKAddrInfo;
Import Com.baidu.mapapi.MKBusLineResult;
Import Com.baidu.mapapi.MKDrivingRouteResult;
Import Com.baidu.mapapi.MKGeneralListener;
Import Com.baidu.mapapi.MKPoiInfo;
Import Com.baidu.mapapi.MKPoiResult;
Import Com.baidu.mapapi.MKSearch;
Import Com.baidu.mapapi.MKSearchListener;
Import Com.baidu.mapapi.MKSuggestionResult;
Import Com.baidu.mapapi.MKTransitRouteResult;
Import Com.baidu.mapapi.MKWalkingRouteResult;
Import com.baidu.mapapi.MapActivity;
Import Com.baidu.mapapi.MapView;
Import Com.baidu.mapapi.RouteOverlay;
public class Mainactivity extends Mapactivity {private Bmapmanager bmapmanager;
Private Mapview Mapview;
Private String key = "43d220aab0dec976d2eabc83cfc9eee52bccca7a";
Private Mksearch Mksearch; @Override protected void OnCreate (Bundle savedinstancestate) {supEr.oncreate (savedinstancestate);
Setcontentview (R.layout.activity_main);
Bmapmanager = new Bmapmanager (mainactivity.this);
Bmapmanager.init (Key, New Mkgenerallistener () {@Override public void ongetpermissionstate (int arg0) { TODO auto-generated Method stub} @Override public void ongetnetworkstate (int arg0) {//
TODO auto-generated Method stub}});
Initmapactivity (Bmapmanager);
Mapview = (Mapview) Findviewbyid (R.id.bmapview);
Mksearch = new Mksearch ();
Mksearch.init (Bmapmanager, New Mysearchlistener ());
Mksearch.poisearchincity ("Kaifeng", "3"); Private class Mysearchlistener implements Mksearchlistener {@Override public void Ongetaddrresult (Mkaddrinf o arg0, int arg1) {//TODO auto-generated Method stub}/* * Get details of bus route map * * @see * C
Om.baidu.mapapi.mksearchlistener#ongetbusdetailresult (Com.baidu. * Mapapi.
Mkbuslineresult, int) * * @Override public void Ongetbusdetailresult (Mkbuslineresult arg0, int arg1) {//TODO auto-generated method s
Tub if (arg0 = null | | arg1!= 0) {toast.maketext (Mainactivity.this, "No results found", 1);
Return
} routeoverlay Routeoverlay = new Routeoverlay (mainactivity.this, Mapview); Routeoverlay.setdata (Arg0.getbusroute ());//Get Bus line Mapview.getoverlays (). Clear ()//clearly identify the bus site identification Mapview.getover
Lays (). Add (Routeoverlay);
Mapview.invalidate ();
The public transport site Mapview.getcontroller () Animateto (Arg0.getbusroute (). Getstart ()) is described in animated form. @Override public void Ongetdrivingrouteresult (Mkdrivingrouteresult arg0, int arg1) {//TODO Auto-generat Ed method stub} @Override public void Ongetpoidetailsearchresult (int arg0, int arg1) {//TODO auto-g enerated Method Stub} * * Obtains the UID of the bus route map and initiates the search for details of the bus line based on the UID * * @see * Com.baidu.mapapi.MKS Earchlistener#ongetpOiresult (COM.BAIDU.MAPAPI *.
Mkpoiresult, int, int) */@Override public void Ongetpoiresult (Mkpoiresult arg0, int arg1, int arg2) { TODO auto-generated Method Stub if (arg0 = null | | | arg2!= 0) {toast.maketext (Mainactivity.this, "No results found
", 1);
Return
//define a bus line description class Mkpoiinfo mkpoiinfo = null;
Get this time love you the total site of the bus line int totalpoinum = Arg0.getnumpois ();
for (int i = 0; i < Totalpoinum i++) {mkpoiinfo = Arg0.getpoi (i);
if (Mkpoiinfo.epoitype = = 2) {break;
} mksearch.buslinesearch ("Kaifeng", Mkpoiinfo.uid);
@Override public void Ongetrgcshareurlresult (String arg0, int arg1) {//TODO auto-generated method stub @Override public void Ongetsuggestionresult (Mksuggestionresult arg0, int arg1) {//TODO Auto-genera Ted Method stub} @Override the public void Ongettransitrouteresult (Mktransitrouteresult arg0, int ARG1) {//TODO auto-generated method stub} @Override public void Ongetwalkingrouteresult (Mkwalkingr Outeresult arg0, int arg1) {//TODO auto-generated Method stub}} @Override protected void OnDestroy ()
{//TODO auto-generated Method Stub Super.ondestroy ();
if (Bmapmanager!= null) {Bmapmanager.destroy ();
Bmapmanager = null;
} @Override protected void Onresume () {//TODO auto-generated Method Stub super.onresume ();
if (Bmapmanager!= null) {Bmapmanager.start ();
} @Override protected void OnPause () {//TODO auto-generated Method Stub super.onpause ();
if (Bmapmanager!= null) {bmapmanager.stop (); } @Override Public boolean Oncreateoptionsmenu (Menu menu) {//Inflate the menu; the adds items to the Actio
n Bar if it is present.
Getmenuinflater (). Inflate (R.menu.main, menu);
return true; } @Override protected Boolean IsroutedisPlayed () {//TODO auto-generated method stub return false;
}
}
Two, multiple line display
Displaying multiple navigation lines on the same map only needs to be done in two steps,
1. Define Start point End
start = new Mkplannode ();
start.pt = new Geopoint ((int) (39.915 * 1E6), (int) (116.404 * 1E6));
end = new Mkplannode ();
end.pt = new Geopoint (40057031, 116307852);
Mksearch.transitsearch ("Beijing", Start, end);
2. Circulate all the circuit details on the map
@Override public
void Ongettransitrouteresult (Mktransitrouteresult arg0, int arg1) {
//TODO auto-generated Method Stub
if (arg0 = = null) {return
;
}
int plannum = Arg0.getnumplan ();//Get all driving routes for
(int i = 0; i < Plannum; i++) {
Transitoverlay overlay = new T Ransitoverlay (Mainactivity.this,
mapview);
Overlay.setdata (Arg0.getplan (i));
Mapview.getoverlays (). Add (overlay);
Mapview.invalidate ();
Mapview.getcontroller (). Animateto (Arg0.getstart (). PT);
The above is the entire content of this article, I hope to help you learn, but also hope that we support the cloud habitat community.