невозможно получить исходные и конечные географические точки в разные переменные

1

Я пытаюсь получить источник и назначение в двух разных переменных в отношении пользовательских взаимодействий на карте. Использование одиночного маркера для источника и адресата. В методе onTouchEvent не onTouchEvent отличить источник и пункт назначения.

С этими точками я хочу рассчитать расстояние и динамически провести маршрут на карте с помощью пользовательских взаимодействий.

Это мой код

public boolean onTouchEvent(MotionEvent event, MapView mapView) {
        final int action=event.getAction();
        final int x=(int)event.getX();
        final int y=(int)event.getY();
        boolean result=false;

        if (action==MotionEvent.ACTION_DOWN) {
            for (OverlayItem item : items) {
                Point p=new Point(0,0);

                map.getProjection().toPixels(item.getPoint(), p);

                if (hitTest(item, marker, x-p.x, y-p.y)) {
                    result=true;
                    inDrag=item;

                    items.remove(inDrag);
                    populate();

                    xDragTouchOffset=0;
                    yDragTouchOffset=0;

                    setDragImagePosition(p.x, p.y);
                    dragImage.setVisibility(View.VISIBLE);

                    xDragTouchOffset=x-p.x;
                    yDragTouchOffset=y-p.y;

                    break;
                }
            }
        }
        else if (action==MotionEvent.ACTION_MOVE && inDrag!=null) {
            setDragImagePosition(x, y);
            result=true;
        }
        else if (action==MotionEvent.ACTION_UP && inDrag!=null) {
            dragImage.setVisibility(View.GONE);

            GeoPoint pt=map.getProjection().fromPixels(x-xDragTouchOffset,
                    y-yDragTouchOffset);

            slatlng[0] = pt.getLatitudeE6()/1E6;
            slatlng[1] = pt.getLongitudeE6()/1E6; 

            urlString = getUrl(slatlng[0], slatlng[1], dlatlng[0],dlatlng[1]);

            try {
                distance = getDistance(urlString);
            } catch (Exception e) {
                e.printStackTrace();
            }           
            System.out.println("Distance : "+distance);
            System.out.println("Lat : " +slatlng[0]+"Lng :"+slatlng[1]);
            OverlayItem toDrop=new OverlayItem(pt, inDrag.getTitle(),
                    inDrag.getSnippet());

            items.add(toDrop);
            populate();

            inDrag=null;
            result=true;
        }

        return(result || super.onTouchEvent(event, mapView));
    }
Теги:
maps
android-mapview

1 ответ

0

Используйте класс Location, чтобы решить проблему.

    Location locationA = new Location("point A");  

locationA.setLatitude(pointA.getLatitudeE6() / 1E6);  
locationA.setLongitude(pointB.getLongitudeE6() / 1E6);  

Location locationB = new Location("point B");  

locationB.setLatitude(pointB.getLatitudeE6() / 1E6);  
locationB.setLongitude(pointB.getLongitudeE6() / 1E6);  

double distance = locationA.distanceTo(locationB);

Проверьте методы класса Location в Location

  • 0
    Как я могу получить PointB Geopoint в этом методе?
  • 0
    Есть ли решения для этого?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню