获取行车方向的android代码
Posted
技术标签:
【中文标题】获取行车方向的android代码【英文标题】:android code for getting driving direction 【发布时间】:2012-06-22 08:50:54 【问题描述】:我目前正在做一个需要获取行车路线的 android 应用程序。我有源点和目的地点的纬度和经度,我得到了两点之间的路径,但我无法获得行车路线。请帮帮我...路径的代码在下面给出
GeoPoint gp1;
GeoPoint gp2 = startGP;
for (int i = 1; i < pairs.length; i++)
lngLat = pairs[i].split(",");
gp1 = gp2;
// watch out! For GeoPoint, first:latitude, second:longitude
gp2 = new GeoPoint((int) (Double.parseDouble(lngLat[1]) * 1E6),
(int) (Double.parseDouble(lngLat[0]) * 1E6));
myMapView.getOverlays().add(new DirectionPathOverlay(gp1, gp2));
Log.d("xxx", "pair:" + pairs[i]);
myMapView.getOverlays().add(new DirectionPathOverlay(gp2, gp2));
myMapView.getController().animateTo(startGP);
myMapView.setBuiltInZoomControls(true);
myMapView.displayZoomControls(true);
private String[] getDirectionData(String srcPlace, String destPlace)
String urlString = "http://maps.google.com/maps?f=d&hl=en&saddr="
+ srcPlace + "&daddr=" + destPlace
+ "&ie=UTF8&0&om=0&output=kml";
Log.d("URL", urlString);
Document doc = null;
HttpURLConnection urlConnection = null;
URL url = null;
String pathConent = "";
try
url = new URL(urlString.toString());
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(urlConnection.getInputStream());
catch (Exception e)
NodeList nl = doc.getElementsByTagName("LineString");
for (int s = 0; s < nl.getLength(); s++)
Node rootNode = nl.item(s);
NodeList configItems = rootNode.getChildNodes();
for (int x = 0; x < configItems.getLength(); x++)
Node lineStringNode = configItems.item(x);
NodeList path = lineStringNode.getChildNodes();
pathConent = path.item(0).getNodeValue();
String[] tempContent = pathConent.split(" ");
return tempContent;
DirectionPathOverlay.java
public class DirectionPathOverlay extends Overlay
private GeoPoint gp1;
private GeoPoint gp2;
public DirectionPathOverlay(GeoPoint gp1, GeoPoint gp2)
this.gp1 = gp1;
this.gp2 = gp2;
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
long when)
// TODO Auto-generated method stub
Projection projection = mapView.getProjection();
if (shadow == false)
Paint paint = new Paint();
paint.setAntiAlias(true);
Point point = new Point();
projection.toPixels(gp1, point);
paint.setColor(Color.BLUE);
Point point2 = new Point();
projection.toPixels(gp2, point2);
paint.setStrokeWidth(2);
canvas.drawLine((float) point.x, (float) point.y, (float) point2.x,
(float) point2.y, paint);
return super.draw(canvas, mapView, shadow, when);
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
// TODO Auto-generated method stub
super.draw(canvas, mapView, shadow);
【问题讨论】:
查看这些 SO 帖子 ***.com/questions/2643993/… 和 ***.com/questions/2023669/… [***.com/questions/1612533/… [1]: ***.com/questions/1612533/… 看看这个 我不想画路径。我想知道行车路线 【参考方案1】:尝试使用此代码显示从您当前位置到某个地点的方向。
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
if (location != null)
System.out.println("Provider " + provider + " has been selected.");
lat = (double) (location.getLatitude());
lng = (double) (location.getLongitude());
else
Log.d(TAG, "Cannot get the location");
final Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://maps.google.com/maps?" + "saddr="+ lat + "," + lng + "&daddr="+hotelLat+","+hotelLng));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
【讨论】:
以上是关于获取行车方向的android代码的主要内容,如果未能解决你的问题,请参考以下文章