1

所以我一直在使用 Google Maps API 构建一个应用程序,但我遇到了墙..

到目前为止,我得到了 MapView(显然),并且我已经设置了一个 GeoPoint 标记所需路线的最终目的地。

我正在将 GPS 功能添加到代码中,这样我就可以监听我的实际位置并随着我的移动而改变。它仍未实施,但我知道如何实施。我还添加了一个图像用作图钉,以查明最终目的地。

我不知道如何通过路线连接两点。如果有人可以启发我,那就太好了

到目前为止我得到了什么:

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;
    }
}
4

1 回答 1

0

我在基于通过对 Google 地图的 HTTP 请求(特别是它的方向服务)解析方向的解决方案上取得了类似的成功,如这个出色的答案中所述。这解释了在 Map Activity 上获取/解析和绘制路线的所有必要步骤。希望这可以帮助!

于 2012-10-31T18:30:25.403 回答