如何在android中的Google map api v2上更改特定区域的颜色

我正在开发一个使用Google Maps API v2的Android应用程序,并希望在点击事件中以特定颜色标记地图上的特定区域。 例如,当我点击印度时,覆盖该国的地区应该是绿色的。

我已经在使用GroundOverlay ,但它需要一个图像来显示地图上的东西,导致彩色区域不匹配。 由于地图和图像都有自己的形状,因此不包含确切的区域。

我想要这样

任何人都可以告诉我如何更准确地着色Android谷歌地图API v2地图?

Solutions Collecting From Web of "如何在android中的Google map api v2上更改特定区域的颜色"

像MaciejGórski说,你必须使用多边形与你的地图Onclick事件。所以我花了一些时间给你,并提出了一个解决scheme。现在我只绘制多边形3点后添加,你可以修改这个以满足您的needs.and也更改颜色(使用RGBA颜色突出显示多边形内的区域)。

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

}

这是使用此代码后的结果。

阅读详细的post,并在这里下载演示应用程序

在这里输入图像说明

您需要将创build此形状的所有点收集为LatLngs List并使用Polygon