2013-05-29 10 views
9

Ich arbeite an einer Android-App, die das Google Maps API v2 nutzt und einen bestimmten Bereich auf der Karte mit einer bestimmten Farbe markieren möchte auf einem Klick-Ereignis. Wenn ich zum Beispiel auf Indien klicke, sollte das Gebiet, das das Land abdeckt, grün gefärbt sein.Wie ändere ich die Farbe eines bestimmten Bereichs auf Google map api v2 in android

Ich benutze bereits GroundOverlay, aber es erfordert ein Bild, um etwas auf der Karte anzuzeigen, was dazu führt, dass der farbige Bereich nicht gut passt. Da sowohl die Karte als auch das Bild ihre eigene Form haben, deckt dies nicht den genauen Bereich ab.

i want like this

Kann jemand bitte sagen Sie mir, wie ein Android Google Maps API v2 Karte einzufärben genauer?

+0

haben Sie Ihre gewünschte Lösung gefunden. bitte posten als Antwort. Ich brauche das. Danke –

+0

Ich möchte auch wie es machen, aber keine Lösung gefunden – Amish

Antwort

3

Wie MaciejGórski sagte Sie Polygon mit Ihrer Karte OnClick event.So ich einige Zeit damit verbracht, damit Sie verwenden müssen und kam mit einem solution.Now bis ich nur das Polygon am Zeichnung nach 3 Punkte hinzugefügt Sie ändern können diese befriedigen Sie Ihre Notwendigkeiten. und ändern Sie auch die Farbe (benutzen Sie RGBA-Farbe, um den Bereich innerhalb des polygone zu markieren).

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; 
} 

}

Hier ist das Ergebnis nach diesem Code.

Lesen Sie die ausführlichen Post and download the Demo App Here

enter image description here

+0

ist es möglich, die Grenzen eines bestimmten Landes zu bekommen, zum Beispiel wenn ich auf Indien klicke, muss ich ganz Indien ausmalen.ist es möglich? @Neo – Venkat

+0

lesen Sie diese Antwort http://StackOverflow.com/a/14385528/1174987 – Neo

0

Sie müssen alle Punkte sammeln, die diese Form als List von LatLngs erstellen und Polygon verwenden.

Verwandte Themen