2013-05-29 9 views
9

Pracuję nad aplikacją na Androida, która korzysta z interfejsu Google Maps API v2 i chce oznaczyć konkretny obszar na mapie w określonym kolorze w przypadku zdarzenia kliknięcia. Na przykład, kiedy klikam Indie, obszar pokrywający kraj powinien być w kolorze zielonym.jak zmienić kolor określonego obszaru na mapie Google api v2 w Androidzie

Używam już wersji GroundOverlay, ale wymagane jest wyświetlenie obrazu na mapie, co powoduje, że kolorowy obszar nie jest dobrze dopasowany. Ponieważ zarówno mapa, jak i obraz mają swój własny kształt, nie obejmuje to dokładnego obszaru.

i want like this

Czy ktoś może mi powiedzieć jak pokolorować Androida Google Maps API v2 mapa dokładniej?

+0

masz znalezieniu wymaganej rozwiązanie. proszę zaksięguj jako odpowiedź. Potrzebuję tego. dziękuję –

+0

Chciałbym również polubić to, ale nie znalazłem żadnego rozwiązania – Amish

Odpowiedz

3

Jak MaciejGórski że trzeba użyć wielokąt z mapy za onclick event.So Spędziłem trochę czasu dla siebie i wymyślił solution.Now rysuję tylko wielokąt po 3 punkty dodawane można zmodyfikować to do zaspokoić swoje potrzeby.i także zmienić kolor (użyj koloru RGBA do podświetlenia obszaru wewnątrz wielokąta).

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

}

Oto wynik po użyciu tego kodu.

przeczytać szczegółowe Post and download the Demo App Here

enter image description here

+0

czy można uzyskać granice określonego kraju? na przykład kiedy klikam na Indie, muszę pokolorować całą Indie. Czy to możliwe? @Neo – Venkat

+0

przeczytaj tę odpowiedź http://stackoverflow.com/a/14385528/1174987 – Neo

0

Musisz zebrać wszystkie punkty tworzące ten kształt jako List z LatLngs i użyć Polygon.

Powiązane problemy