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

Ven*_*kat 8 android google-maps-android-api-2

我正在开发一款使用Google Maps API v2的Android应用,并希望在点击活动中使用特定颜色标记地图上的特定区域.例如,当我点击印度时,覆盖该国家的区域应该是绿色的.

我已经在使用GroundOverlay,但它需要一张图像才能在地图上显示某些内容,从而导致彩色区域不匹配.由于地图和图像都有自己的形状,因此不包括确切的区域.

我想要这样

任何人都可以告诉我如何更准确地为Android Google Maps API v2地图上色?

Neo*_*Neo 4

就像 MaciejG\xc3\xb3rski 所说,你必须在地图的 Onclick 事件中使用多边形。所以我花了一些时间为你提供了一个解决方案。现在我只在添加 3 个点后绘制多边形,你可以修改它以满足您的需求。还可以更改颜色(使用 RGBA 颜色突出显示多边形内的区域)。

\n\n
package com.mzubair.mapkey;\n\nimport android.graphics.Color;\nimport android.os.Bundle;\nimport android.support.v4.app.FragmentActivity;\nimport android.view.Menu;\nimport android.widget.TextView;\n\nimport com.google.android.gms.maps.GoogleMap;\nimport com.google.android.gms.maps.GoogleMap.OnMapClickListener;\nimport com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;\nimport com.google.android.gms.maps.SupportMapFragment;\nimport com.google.android.gms.maps.model.LatLng;\nimport com.google.android.gms.maps.model.Polygon;\nimport com.google.android.gms.maps.model.PolygonOptions;\n\npublic class MainActivity extends FragmentActivity implements OnMapClickListener, OnMapLongClickListener {\n\nprivate GoogleMap googleMap;\nprivate TextView tapTextView;\nprivate PolygonOptions polygonOptions;\nprivate Polygon polygon;\n\n\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.activity_main);\n    tapTextView = (TextView) findViewById(R.id.textView1);\n    polygonOptions = new PolygonOptions();\n\n\n    // Getting reference to the SupportMapFragment of activity_main.xml\n    SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);\n\n                // Getting GoogleMap object from the fragment\n                googleMap = fm.getMap();\n\n                setUpMap();\n\n}\n\n private void setUpMap() //If the setUpMapIfNeeded(); is needed then...\n    {\n        googleMap.setOnMapClickListener((OnMapClickListener) this);\n        googleMap.setOnMapLongClickListener((OnMapLongClickListener) this);\n    }\n\n @Override\n    public void onMapClick(LatLng point) {\n        tapTextView.setText("tapped, point=" + point);\n        polygonOptions.add(point);\n        countPolygonPoints();\n    }\n\n    @Override\n    public void onMapLongClick(LatLng point) {\n        tapTextView.setText("long pressed, point=" + point);\n    }\n    public void countPolygonPoints(){\n        if(polygonOptions.getPoints().size()>3){\n\n\n\n            polygonOptions.strokeColor(Color.RED);\n            polygonOptions.strokeWidth((float) 0.30);\n            polygonOptions.fillColor(Color.BLUE);\n            polygon = googleMap.addPolygon(polygonOptions);\n\n        }\n    }\n\n@Override\npublic boolean onCreateOptionsMenu(Menu menu) {\n    // Inflate the menu; this adds items to the action bar if it is present.\n    getMenuInflater().inflate(R.menu.main, menu);\n    return true;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

}

\n\n

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

\n\n

阅读详细帖子并在此处下载演示应用程序

\n\n

在此输入图像描述

\n