Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
970 views
in Technique[技术] by (71.8m points)

how to change the color of a particular area on Google map api v2 in android

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.

i want like this

Can anyone please tell me how to color an Android Google Maps API v2 map more accurately?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

enter image description here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...