AndroiDBeginner
AndroiDBeginner

Reputation: 3599

How to draw line on Map View given coordinates?

How to draw line on MapView given coordinates?

AFAIK, on iPhone it is possible.

Please advise.

Thanks in advance.

Upvotes: 5

Views: 10437

Answers (2)

Arda Kaplan
Arda Kaplan

Reputation: 1758

You can use this code, sample coordinates and its usages.

//...setting map and starting 

ArrayList<LatLng> list = new ArrayList<>();
list.add(new LatLng(41.020244, 29.045663));
list.add(new LatLng(41.019904, 29.045448));
list.add(new LatLng(41.019451, 29.044397));
list.add(new LatLng(41.019710, 29.043474));

PolylineOptions options = new PolylineOptions()
    .width(5)
    .color(Color.BLUE)
    .geodesic(true);

for (int z = 0; z < list.size(); z++) {
    LatLng point = list.get(z);
    options.add(point);
}

CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(new LatLng(41.020811, 29.046113))
    .zoom(15)
    .build();

mGoogleMap.addPolyline(options);
mGoogleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

Upvotes: 0

Jeremy Logan
Jeremy Logan

Reputation: 47514

To use a MapView your Activity must extend MapActivity.

For each line you want to draw (or really anything else) you need to subclass Overlay and do the drawing in the Overlay's onDraw() method. Once you've created your Overlay add it to the MapView with something like mMapView.getOverlays().add(new MyOverlay());.

Inside your custom Overlay you'll want to get a Projection with something like Projection p = mapView.getProjection();. From the Projection you can convert GPS coordinates into screen coordinates with Projection's toPixels(GeoPoint, Point) method and then just draw to the passed in Canvas using normal Android 2D drawing methods.

That's the basics... if you need anything else, just ask.

Upvotes: 21

Related Questions