Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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_Google Maps Api 3 - Fatal编程技术网

在android中,如何在谷歌地图上的两点之间获得方向?

在android中,如何在谷歌地图上的两点之间获得方向?,android,google-maps,google-maps-api-3,Android,Google Maps,Google Maps Api 3,我搜索了两个小时,但只找到了绘制线,我想得到这个表单点击的方向!我有十个点,当我点击该点时,我想显示从我的位置到该点的方向。 我的代码外观: package de.vogella.android.locationapi.maps; import android.content.Context; import android.graphics.drawable.Drawable; import android.location.Location; import android.location.

我搜索了两个小时,但只找到了绘制线,我想得到这个表单点击的方向!我有十个点,当我点击该点时,我想显示从我的位置到该点的方向。 我的代码外观:

package de.vogella.android.locationapi.maps;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;

   import com.google.android.maps.GeoPoint;
   import com.google.android.maps.MapActivity;
   import com.google.android.maps.MapController;
   import com.google.android.maps.MapView;
   import com.google.android.maps.MyLocationOverlay;
   import com.google.android.maps.OverlayItem;
   import com.google.android.maps.Projection;

    public class ShowMapActivity extends MapActivity {

private MapController mapController;
private MapView mapView;
private LocationManager locationManager;
private MyOverlays itemizedoverlay,itemizedoverlay_central;
private MyLocationOverlay myLocationOverlay;
private String nameOfOffice_AZ[];
private String addressOfOffice_AZ[];
private String phoneOfOffice_AZ[];

public void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(R.layout.main); // bind the layout to the activity

    // Configure the Map
    mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);

    Projection projection = mapView.getProjection();

    nameOfOffice_AZ= getResources().getStringArray(R.array.NamesOFObject_AZ);
    addressOfOffice_AZ = getResources().getStringArray(R.array.AddressOfOffice_AZ);
    phoneOfOffice_AZ = getResources().getStringArray(R.array.PhoneOfOffice_AZ);


    mapController = mapView.getController();
    mapController.setZoom(16); // Zoon 1 is world view
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
            0, new GeoUpdateHandler());

    myLocationOverlay = new MyLocationOverlay(this, mapView);
    mapView.getOverlays().add(myLocationOverlay);

    myLocationOverlay.runOnFirstFix(new Runnable() {
        public void run() {
            mapView.getController().animateTo(myLocationOverlay.getMyLocation());
        }
    });

    Drawable drawable = this.getResources().getDrawable(R.drawable.office_icon);
    Drawable drawable_central = this.getResources().getDrawable(R.drawable.central_office);



    itemizedoverlay = new MyOverlays(this, drawable);
    itemizedoverlay_central = new MyOverlays(this, drawable_central);

    createMarker();
}

@Override
protected boolean isRouteDisplayed() {
    return false;
}

public class GeoUpdateHandler implements LocationListener {

    @Override
    public void onLocationChanged(Location location) {
        int lat = (int) (location.getLatitude() * 1E6);
        int lng = (int) (location.getLongitude() * 1E6);
        GeoPoint point = new GeoPoint(lat, lng);
        createMarker();
        mapController.animateTo(point); // mapController.setCenter(point);

    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
}

private void createMarker() {
    //CENTRAL OFFICE
    GeoPoint p_central = new GeoPoint((int)(40.38292884084829 * 1e6),(int)(49.84223246574 * 1e6));
    OverlayItem overlayitem = new OverlayItem(p_central, nameOfOffice_AZ[0] ,addressOfOffice_AZ[0]+"\n"+phoneOfOffice_AZ[0] );
    itemizedoverlay_central.addOverlay(overlayitem);
    mapView.getOverlays().add(itemizedoverlay_central);
    //END CENTRALL OFFICE


    GeoPoint p = new GeoPoint((int)(40.376455916943236 * 1e6),(int)(49.84803676605224 * 1e6));
    overlayitem = new OverlayItem(p, nameOfOffice_AZ[0] ,addressOfOffice_AZ[0]+"\n"+phoneOfOffice_AZ[0] );
    itemizedoverlay.addOverlay(overlayitem);

        mapView.getOverlays().add(itemizedoverlay);

}

@Override
protected void onResume() {
    super.onResume();
    myLocationOverlay.enableMyLocation();
    myLocationOverlay.enableCompass();
}

@Override
protected void onPause() {
    super.onPause();
    myLocationOverlay.disableMyLocation();
    myLocationOverlay.disableCompass();
}
} 和MyOverlays.java

package de.vogella.android.locationapi.maps;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
 import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.Toast;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;

 public class MyOverlays extends ItemizedOverlay<OverlayItem> {

private static int maxNum = 5;
private OverlayItem overlays[] = new OverlayItem[maxNum];
private int index = 0;
private boolean full = false;
private Context mContext;
private OverlayItem previousoverlay;

public MyOverlays(Context context, Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
    this.mContext = context;
}

private ArrayList< OverlayItem > mOverlays = new ArrayList< OverlayItem >();





public void addOverlay(OverlayItem overlay) {
    mOverlays.add(overlay);
    populate();
}
public void name()  {

}
@Override
protected OverlayItem createItem(int i) {
    return mOverlays.get(i);
}

@Override
public int size() {
    return mOverlays.size();
}

@Override
protected boolean onTap(int i) {
    //when you tap on the marker this will show the informations provided by you when    you create in the 
    //main class the OverlayItem
   OverlayItem item = mOverlays.get(i);

    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
    dialog.setInverseBackgroundForced(true);
    dialog.setTitle(item.getTitle());
    dialog.setMessage(item.getSnippet());

    dialog.setCancelable(true);
    dialog.setPositiveButton("Go To", new OkOnClickListener());
   /// dialog.setNegativeButton("No, no", new CancelOnClickListener());
    dialog.show();
//  nese bax = new nese();
//  bax.oldu(mContext);
    return true;
}
private final class CancelOnClickListener implements
DialogInterface.OnClickListener {
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(mContext, "You clicked yes", Toast.LENGTH_LONG)
                .show();
    }
    }

    private final class OkOnClickListener implements
    DialogInterface.OnClickListener {
public void onClick(DialogInterface dialog, int which) {
    //Toast.makeText(mContext, "You clicked no", Toast.LENGTH_LONG).show();
}

}


    public class RoutePath extends MapActivity { 
/** Called when the activity is first created. */ 

MapView mapView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

MapView mapView = (MapView) findViewById(R.id.mapview); 
double src_lat = 25.04202; // the testing source 
double src_long = 121.534761; 
double dest_lat = 25.05202; // the testing destination 
double dest_long = 121.554761; 
GeoPoint srcGeoPoint = new GeoPoint((int) (src_lat * 1E6), 
(int) (src_long * 1E6)); 
GeoPoint destGeoPoint = new GeoPoint((int) (dest_lat * 1E6), 
(int) (dest_long * 1E6)); 

DrawPath(srcGeoPoint, destGeoPoint, Color.GREEN, mapView); 

mapView.getController().animateTo(srcGeoPoint); 
mapView.getController().setZoom(15); 

} 

@Override 
protected boolean isRouteDisplayed() { 
// TODO Auto-generated method stub 
return false; 
} 

private void DrawPath(GeoPoint src, GeoPoint dest, int color, 
MapView mMapView01) { 

// code in section 2.2 

} 

}
package de.vogella.android.locationapi.maps;
导入java.util.ArrayList;
导入android.app.AlertDialog;
导入android.app.AlertDialog.Builder;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.graphics.Color;
导入android.graphics.drawable.drawable;
导入android.os.Bundle;
导入android.widget.Toast;
导入com.google.android.maps.GeoPoint;
导入com.google.android.maps.ItemizedOverlay;
导入com.google.android.maps.MapActivity;
导入com.google.android.maps.MapView;
导入com.google.android.maps.OverlayItem;
公共类MyOverlays扩展了ItemizedOverlay{
私有静态int maxNum=5;
私有OverlayItem overlays[]=新OverlayItem[maxNum];
私有整数指数=0;
私有布尔满=假;
私有上下文;
私有覆盖项先前覆盖;
公共MyOverlays(上下文、可绘制的defaultMarker){
super(boundCenterBottom(defaultMarker));
this.mContext=上下文;
}
私有ArrayListmOverlays=新ArrayList();
公共void addOverlay(OverlayItem overlay){
添加(覆盖);
填充();
}
公共无效名称(){
}
@凌驾
受保护的OverlayItem createItem(int i){
返回mOverlays.get(i);
}
@凌驾
公共整数大小(){
返回mOverlays.size();
}
@凌驾
受保护的布尔onTap(int i){
//当您点击标记时,将显示您在中创建时提供的信息
//覆盖项的主类
OverlayItem item=mOverlays.get(i);
AlertDialog.Builder dialog=新建AlertDialog.Builder(mContext);
对话框。setInverseBackgroundForced(真);
setTitle(item.getTitle());
setMessage(item.getSnippet());
对话框。可设置可取消(true);
setPositiveButton(“转到”,新建OkOnClickListener());
///setNegativeButton(“否,否”,新的CancelOnClickListener());
dialog.show();
//nese bax=新的nese();
//bax.oldu(mContext);
返回true;
}
私有最终类CancelOnClickListener实现
DialogInterface.OnClickListener{
public void onClick(DialogInterface dialog,int which){
Toast.makeText(mContext,“您单击了是”,Toast.LENGTH\u LONG)
.show();
}
}
私有最终类OkOnClickListener实现
DialogInterface.OnClickListener{
public void onClick(DialogInterface dialog,int which){
//Toast.makeText(mContext,“您单击了否”,Toast.LENGTH_LONG.show();
}
}
公共类RoutePath扩展了MapActivity{
/**首次创建活动时调用。*/
地图视图;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView MapView=(MapView)findViewById(R.id.MapView);
double src_lat=25.04202;//测试源
双src_long=121.534761;
double dest_lat=25.05202;//测试目的地
双端长=121.554761;
地质点SRCEOPINT=新的地质点((int)(src_lat*1E6),
(int)(src_long*1E6);;
地质点destGeoPoint=新的地质点((int)(dest_lat*1E6),
(国际)(目的地长*1E6));
绘图路径(srcGeoPoint、destGeoPoint、Color.GREEN、mapView);
mapView.getController().animateTo(srcGeoPoint);
mapView.getController().setZoom(15);
} 
@凌驾
受保护的布尔值isRouteDisplayed(){
//TODO自动生成的方法存根
返回false;
} 
专用空心绘制路径(地质点src、地质点dest、int color、,
地图视图mMapView01){
//第2.2节中的代码
} 
}

}

这篇博客文章可能是一个很好的起点:


对我来说很好。

这篇博客文章可以作为一个很好的起点:


对我来说效果很好。

搜索方面的努力减少了

不管怎么说,看看吧

以及使用意图

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://maps.google.com/maps?saddr=xx.xx,xx.xx&daddr=xx.xx,xx.xx"));
startActivity(intent);

搜索方面的努力减少了

不管怎么说,看看吧

以及使用意图

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://maps.google.com/maps?saddr=xx.xx,xx.xx&daddr=xx.xx,xx.xx"));
startActivity(intent);

一个很好的教程此api不适用于多个路由
https://maps.google.com/maps?saddr=new+york&daddr=baltimore&saddr=harrisburg&daddr=Sunbury,UnitedState
,仅适用于使用“to=”的连接路线这个api不适用于多个路由
https://maps.google.com/maps?saddr=new+york&daddr=baltimore&saddr=harrisburg&daddr=Sunbury,UnitedState
,仅适用于使用“to=”参数连接的路线。谢谢,我不太了解代码绘制线或路径(我指的是汽车道路)在给定两点之间?谢谢,我不太理解代码在给定两点之间画线或路径(我指的是汽车道路)?