I am working on an Android app that makes use of the Google Maps API v2 and would like to mark a specific area on the map with a certain color on a click event. For example, when I click on India, the area covering the country should be colored green.
I'm already using GroundOverlay
, but it requires an image to display something on the map, resulting in the colored area not being a good match. Since both the map and the image have their own shape, this does not cover the exact area.
Can anyone please tell me how to color an Android Google Maps API v2 map more accurately?
Like MaciejGórski said you have to use polygon with your Map's Onclick event.So i spent some time for you and came up with a solution.Now i am only drawing the polygon after 3 points added you can modify this to satisfy your needs.and also change the Color(Use RGBA color for highlighting the area inside the polygone).
package com.mzubair.mapkey;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.widget.TextView;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Polygon;
import com.google.android.gms.maps.model.PolygonOptions;
public class MainActivity extends FragmentActivity implements OnMapClickListener, OnMapLongClickListener {
private GoogleMap googleMap;
private TextView tapTextView;
private PolygonOptions polygonOptions;
private Polygon polygon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tapTextView = (TextView) findViewById(R.id.textView1);
polygonOptions = new PolygonOptions();
// Getting reference to the SupportMapFragment of activity_main.xml
SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
// Getting GoogleMap object from the fragment
googleMap = fm.getMap();
setUpMap();
}
private void setUpMap() //If the setUpMapIfNeeded(); is needed then...
{
googleMap.setOnMapClickListener((OnMapClickListener) this);
googleMap.setOnMapLongClickListener((OnMapLongClickListener) this);
}
@Override
public void onMapClick(LatLng point) {
tapTextView.setText("tapped, point=" + point);
polygonOptions.add(point);
countPolygonPoints();
}
@Override
public void onMapLongClick(LatLng point) {
tapTextView.setText("long pressed, point=" + point);
}
public void countPolygonPoints(){
if(polygonOptions.getPoints().size()>3){
polygonOptions.strokeColor(Color.RED);
polygonOptions.strokeWidth((float) 0.30);
polygonOptions.fillColor(Color.BLUE);
polygon = googleMap.addPolygon(polygonOptions);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Here is the result after using this code.
Read the Detailed Post and download the Demo App Here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With