Android应用程序-映射API-从A到B

Android应用程序-映射API-从A到B,android,google-maps,Android,Google Maps,因此,我一直在使用谷歌地图API构建一个应用程序,我遇到了一堵墙 到目前为止,我已经得到了地图视图(很明显),并且我已经设置了一个地质点来标记想要的路线的最终目的地 我正在将GPS功能添加到代码中,这样我就可以监听我的实际位置,并在移动时进行更改。它还没有实现,但我知道如何实现。我还添加了一个图像作为pin,以确定最终目的地 我不知道的是如何用一条路线连接这两个点。如果有人能在这方面给我启发,那就太好了 到目前为止,我得到的是: package com.example.igestao; imp

因此,我一直在使用谷歌地图API构建一个应用程序,我遇到了一堵墙

到目前为止,我已经得到了地图视图(很明显),并且我已经设置了一个地质点来标记想要的路线的最终目的地

我正在将GPS功能添加到代码中,这样我就可以监听我的实际位置,并在移动时进行更改。它还没有实现,但我知道如何实现。我还添加了一个图像作为pin,以确定最终目的地

我不知道的是如何用一条路线连接这两个点。如果有人能在这方面给我启发,那就太好了

到目前为止,我得到的是:

package com.example.igestao;

import android.os.Bundle;
import android.annotation.SuppressLint;
import com.example.igestao.R;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MapController;
import com.google.android.maps.GeoPoint;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import com.google.android.maps.Overlay;
import java.util.List;

@SuppressLint("SetJavaScriptEnabled")
public class Mapa extends MapActivity {

    MapView map;
    MapController mc;
    GeoPoint p;

    class MapOverlay extends com.google.android.maps.Overlay {

        @Override
        public boolean draw(Canvas canvas, MapView map, boolean shadow, long when) {

            super.draw(canvas, map, shadow);

            //translate the GeoPoint to screen pixels
            Point screenPts = new Point();
            map.getProjection().toPixels(p, screenPts);

            //add pin
            Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.gpin);
            canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
            return true;        
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        map = (MapView)findViewById(R.id.mvMapa);
        map.setBuiltInZoomControls(true);
        //map.setSatellite(true);
        mc = map.getController();
        String coordinates[] = {"38.75795","-9.15324"};
        double lat = Double.parseDouble(coordinates[0]);
        double lon = Double.parseDouble(coordinates[1]);
        p = new GeoPoint(   (int)(lat * 1E6), (int)(lon * 1E6) );
        mc.animateTo(p);
        mc.setZoom(17);
        map.invalidate();

        //add location marker

        MapOverlay mapOverlay = new MapOverlay();
        List<Overlay> listOfOverlays = map.getOverlays();
        listOfOverlays.clear();
        listOfOverlays.add(mapOverlay);
        map.invalidate();        
    }

    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
}
package com.example.igestao;
导入android.os.Bundle;
导入android.annotation.SuppressLint;
导入com.example.igestao.R;
导入com.google.android.maps.MapActivity;
导入com.google.android.maps.MapView;
导入com.google.android.maps.MapController;
导入com.google.android.maps.GeoPoint;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.graphics.Canvas;
导入android.graphics.Point;
导入com.google.android.maps.Overlay;
导入java.util.List;
@SuppressLint(“SetJavaScriptEnabled”)
公共类Mapa扩展了MapActivity{
地图视图;
地图控制器;
地质点p;
类MapOverlay扩展了com.google.android.maps.Overlay{
@凌驾
公共布尔绘制(画布、地图视图、布尔阴影、长时间){
超级。绘制(画布、地图、阴影);
//将地质点转换为屏幕像素
点屏幕PTS=新点();
map.getProjection().toPixels(p,screenPts);
//添加pin码
位图bmp=BitmapFactory.decodeResource(getResources(),R.drawable.gpin);
canvas.drawBitmap(bmp,screenPts.x,screenPts.y-50,null);
返回true;
}
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_映射);
map=(MapView)findviewbyd(R.id.mvMapa);
map.setBuiltInZoomControls(真);
//地图.固定卫星(真);
mc=map.getController();
字符串坐标[]={“38.75795”,“-9.15324”};
double lat=double.parseDouble(坐标[0]);
double lon=double.parseDouble(坐标[1]);
p=新的地质点((内部)(纬度*1E6),(内部)(纬度*1E6));
司马迁(p),;
mc.setZoom(17);
map.invalidate();
//添加位置标记
MapOverlay MapOverlay=新的MapOverlay();
List listOfOverlays=map.getOverlays();
listOfOverlays.clear();
添加(映射覆盖);
map.invalidate();
}
@凌驾
受保护的布尔值isRouteDisplayed(){
//TODO自动生成的方法存根
返回false;
}
}

我在一个解决方案中也取得了类似的成功,该解决方案基于通过对Google Maps(特别是其方向服务)的HTTP请求解析方向,如上所述。这说明了在地图活动中获取/解析和绘制路线所需的所有步骤。希望这有帮助