Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于Android位置的应用_Android_Google Maps - Fatal编程技术网

基于Android位置的应用

基于Android位置的应用,android,google-maps,Android,Google Maps,我正在开发一个android应用程序,我需要计算车辆行驶的总距离、到目前为止花费的时间和等待时间,类似于ola应用程序。我应该如何继续地图导航服务在maps.google.com类下提供,您得到的响应是KML格式的 要获取kml文件,我们需要形成包含起始和目标位置的url: public static String getUrl(double fromLat, double fromLon, double toLat, double toLon) {// connect to map web s

我正在开发一个android应用程序,我需要计算车辆行驶的总距离、到目前为止花费的时间和等待时间,类似于ola应用程序。我应该如何继续

地图导航服务在maps.google.com类下提供,您得到的响应是KML格式的

要获取kml文件,我们需要形成包含起始和目标位置的url:

public static String getUrl(double fromLat, double fromLon,
double toLat, double toLon) {// connect to map web service
StringBuffer urlString = new StringBuffer();
urlString.append("http://maps.google.com/maps?f=d&hl=en");
urlString.append("&saddr=");// from
urlString.append(Double.toString(fromLat));
urlString.append(",");
urlString.append(Double.toString(fromLon));
urlString.append("&daddr=");// to
urlString.append(Double.toString(toLat));
urlString.append(",");
urlString.append(Double.toString(toLon));
urlString.append("&ie=UTF8&0&om=0&output=kml");
return urlString.toString();
}
接下来,您需要创建一个对象类,该类将解析xml(使用SAXParser实现)并填充数据结构:

public class Point {
String mName;
String mDescription;
String mIconUrl;
double mLatitude;
double mLongitude;
}

public class Road {
public String mName;
public String mDescription;
public int mColor;
public int mWidth;
public double[][] mRoute = new double[][] {};
public Point[] mPoints = new Point[] {};
}
这个特定示例的完整源代码可以在下面找到

该类中的主线是调用getURL和getRoute方法

public static String getUrl(double fromLat, double fromLon,
double toLat, double toLon) 
要获得源和目标的路由,需要调用此方法

public static Road getRoute(InputStream is)  
要在Adroid应用程序中实现这段代码,请查看以下代码:

public class MapRouteActivity extends MapActivity {    
LinearLayout linearLayout;
MapView mapView;
private Road mRoad;    
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);    
new Thread() {
@Override
public void run() {
double fromLat = 49.85, fromLon = 24.016667; 
double toLat = 50.45, toLon = 30.523333;
String url = RoadProvider
  .getUrl(fromLat, fromLon, toLat, toLon);
InputStream is = getConnection(url);
mRoad = RoadProvider.getRoute(is);
mHandler.sendEmptyMessage(0);
}
}.start();
}

Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
TextView textView = (TextView) findViewById(R.id.description);
textView.setText(mRoad.mName + " " + mRoad.mDescription);
MapOverlay mapOverlay = new MapOverlay(mRoad, mapView);
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapView.invalidate();
};
};

private InputStream getConnection(String url) {
InputStream is = null;
try {
URLConnection conn = new URL(url).openConnection();
is = conn.getInputStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return is;
}    
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
公共类MapRouteActivity扩展了MapActivity{
线性布局线性布局;
地图视图;
私家路;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView=(mapView)findViewById(R.id.mapView);
mapView.SetBuilTinZoomControl(真);
新线程(){
@凌驾
公开募捐{
双fromLat=49.85,fromLon=24.016667;
双托拉特=50.45,托伦=30.523333;
字符串url=RoadProvider
.getUrl(fromLat、fromLon、toLat、toLon);
InputStream is=getConnection(url);
mRoad=RoadProvider.getRoute(is);
mHandler.sendEmptyMessage(0);
}
}.start();
}
Handler mHandler=新处理程序(){
public void handleMessage(android.os.Message msg){
TextView TextView=(TextView)findViewById(R.id.description);
textView.setText(mRoad.mName+“”+mRoad.mDescription);
MapOverlay MapOverlay=新的MapOverlay(mRoad,mapView);
List ListoForLays=mapView.getOverlays();
listOfOverlays.clear();
添加(映射覆盖);
mapView.invalidate();
};
};
私有InputStream getConnection(字符串url){
InputStream=null;
试一试{
URLConnection conn=新URL(URL).openConnection();
is=conn.getInputStream();
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
回报是;
}    
@凌驾
受保护的布尔值isRouteDisplayed(){
返回false;
}
}

希望这会有帮助

我会得到起点和终点的路线,但我不会得到到目前为止行驶的距离