如何在android中更改Google map api v2上特定区域的颜色
我正在开发一款Android应用程序,它使用谷歌地图API v2,并希望在点击事件中用某种颜色标记地图上的特定区域。例如,当我点击印度时,覆盖该国的区域应为绿色 我已经在使用如何在android中更改Google map api v2上特定区域的颜色,android,google-maps-android-api-2,Android,Google Maps Android Api 2,我正在开发一款Android应用程序,它使用谷歌地图API v2,并希望在点击事件中用某种颜色标记地图上的特定区域。例如,当我点击印度时,覆盖该国的区域应为绿色 我已经在使用GroundOverlay,但是它需要一个图像来在地图上显示一些东西,导致彩色区域不匹配。因为地图和图像都有自己的形状,所以这并没有覆盖确切的区域 有谁能告诉我如何更准确地给Android Google Maps API v2地图上色吗?你需要收集所有创建此形状的点作为列表的LatLngs并使用。就像MaciejGórsk
GroundOverlay
,但是它需要一个图像来在地图上显示一些东西,导致彩色区域不匹配。因为地图和图像都有自己的形状,所以这并没有覆盖确切的区域
有谁能告诉我如何更准确地给Android Google Maps API v2地图上色吗?你需要收集所有创建此形状的点作为
列表的LatLngs
并使用。就像MaciejGórski说的那样,你必须在地图的Onclick事件中使用多边形提出了一个解决方案。现在我只在添加3个点后绘制多边形。您可以修改它以满足您的需要。还可以更改颜色(使用RGBA颜色高亮显示多边形内的区域)
}
下面是使用此代码后的结果
阅读详细的
是否可以获取特定国家的边界?例如,当我单击“印度”时,我需要将整个印度涂上颜色。是否可以@您是否找到了所需的解决方案。请发帖回答。我需要这个。thanksI也希望这样做,但没有找到任何解决方案
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;
}