2

私は現在、Googleマップを含むAndroidアプリケーションを実行しています。このマップでは、2 点間に手動でパスを描きたいと考えています。1 つのポイントは現在のポイントで、もう 1 つはユーザーがマークしたポイントです (オーバーレイ クラスの 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;



                    }

                }
            });   
4

1 に答える 1

0

2 つのジオ ポイントがわかっている場合は、このリンクに従って、それらのポイント間にパスを描画します。

http://lokeshatandroid.blogspot.in/2012/09/draw-path-between-two-geo-points.html

すでに現在の位置 GeoPoint を知っており、ユーザーが指定したマークの緯度と経度の値を見つけて、上記のリンクに従ってください。

于 2012-09-17T10:51:56.757 に答える