Android 在谷歌地图中手动绘制路径

Android 在谷歌地图中手动绘制路径,android,google-maps,Android,Google Maps,我目前正在做一个包含谷歌地图的android应用程序。在这张地图中,我想在两点之间手动绘制一条路径。一个点是我的当前点,另一个是用户标记的点(在overlay类中使用draw方法绘制,代码如下所示)。请帮帮我 protected class Touchy extends Overlay { @Override public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long

我目前正在做一个包含谷歌地图的android应用程序。在这张地图中,我想在两点之间手动绘制一条路径。一个点是我的当前点,另一个是用户标记的点(在overlay类中使用draw方法绘制,代码如下所示)。请帮帮我

 protected class Touchy extends Overlay {

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
            long when) {
        Paint paint = new Paint();

        super.draw(canvas, mapView, shadow);
        // Converts lat/lng-Point to OUR coordinates on the screen.
        Point myScreenCoords = new Point();
        mapView.getProjection().toPixels(geoPoint, myScreenCoords);

        paint.setStrokeWidth(1);
        paint.setARGB(255, 255, 255, 255);
        paint.setStyle(Paint.Style.STROKE);

        Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                R.drawable.source);

        canvas.drawBitmap(bmp, myScreenCoords.x, myScreenCoords.y, paint);

        for(int i=0;i<size;i++)
        {
            mapView.getProjection().toPixels(GP[i], myScreenCoords);
            canvas.drawBitmap(bmp,myScreenCoords.x, myScreenCoords.y,                        paint);
        }
        return true;
    }

    @Override
    public boolean onTouchEvent(MotionEvent e, final MapView m) {
        // TODO Auto-generated method stub

        System.out.println("Hiiiiiiiiiiiiiiiiiiii");

        if (e.getAction() == MotionEvent.ACTION_DOWN) {
            start = e.getEventTime();
            int x = (int) e.getX();
            int y = (int) e.getY();
            touchedPoint = m.getProjection().fromPixels(x, y);
            System.out.println(touchedPoint);
        }

        if (e.getAction() == MotionEvent.ACTION_UP) {
            stop = e.getEventTime();
        }
        if (stop - start > 1500) {

            AlertDialog alert = new AlertDialog.Builder(
                    LocationTrackerActivity.this).create();
            alert.setTitle("Location Tracker");
            alert.setMessage("Enter your Option");

            alert.setButton("Mark", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    if (FlagPin == 0) {

                        OverlayItem overlayItem = new OverlayItem(
                                touchedPoint, "wazzup", "xd");
                        PinPoint custom = new PinPoint(d,
                                LocationTrackerActivity.this);

                        custom.insertPinpoint(overlayItem);
                        overlayList.add(custom);
                        FlagPin = 1;

                        destLat = touchedPoint.getLatitudeE6() / 1E6;
                        desLong = touchedPoint.getLongitudeE6() / 1E6;



                    }

                }
            });   
受保护的类Touchy扩展覆盖{
@凌驾
公共布尔绘制(画布、地图视图、地图视图、布尔阴影、,
很久以前){
油漆=新油漆();
super.draw(画布、地图视图、阴影);
//将lat/lng点转换为屏幕上的坐标。
点myScreenCoords=新点();
mapView.getProjection().toPixels(地理点,myScreenCoods);
油漆。设置行程宽度(1);
setARGB(255、255、255、255);
绘制.设置样式(绘制.样式.笔划);
位图bmp=BitmapFactory.decodeResource(getResources(),
R.可提取源);
drawBitmap(bmp,myScreenCoods.x,myScreenCoods.y,paint);
对于(int i=0;i 1500){
AlertDialog alert=新建AlertDialog.Builder(
LocationTrackerActivity.this).create();
alert.setTitle(“位置跟踪器”);
alert.setMessage(“输入您的选项”);
alert.setButton(“标记”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
如果(FlagPin==0){
OverlayItem OverlayItem=新的OverlayItem(
接触点,“wazzup”、“xd”);
精确定位自定义=新的精确定位(d,
LocationTrackerActivity.this);
自定义.insertPinpoint(覆盖项);
添加(自定义);
FlagPin=1;
destrat=touchedPoint.getLatitudeE6()/1E6;
desLong=touchedPoint.getLongitudeE6()/1E6;
}
}
});   

如果您知道两个地理点,请按照此链接在这些点之间绘制路径


您已经知道您当前的地理点位置,并找到用户点标记的横向和纵向值,然后按照上面的链接进行操作。

如果您知道两个地理点,请按照此链接在这些点之间绘制路径

您已经知道您当前的位置地质点,并找到用户指向标记的纬度和长度值,然后按照上面的链接进行操作