Я хочу наложить наложение на карты Google, где все, кроме радиуса 1,5 км вокруг определенной точки, затеняется. Я попытался использовать круг с огромным количеством границ для этого, поэтому я бы поставил прозрачный центр и наложенный цвет на границе, чтобы достичь этого, но он не отображает ОК.Рисовать карты Donut google Android
map.addCircle(new CircleOptions()
.center(london)
.radius(500)
.strokeWidth(100)
.strokeColor(R.color.map_overlay_color)
.fillColor(Color.RED)); // not transparent for showcase
http://i.stack.imgur.com/6NFfI.png
Так я решил сделать это с полигона, используя отверстие.
List<LatLng> points = new ArrayList<LatLng>();
points.add(new LatLng(london.latitude-2, london.longitude-2));
points.add(new LatLng(london.latitude-2, london.longitude+2));
points.add(new LatLng(london.latitude + 2, london.longitude + 2));
points.add(new LatLng(london.latitude + 2, london.longitude - 2));
List<LatLng> hole = new ArrayList<LatLng>();
for(int i = 0; i < 360; i += 1){
LatLng coords = new LatLng(london.latitude + (radius * Math.cos(Math.toRadians(i))), london.longitude + (radius * Math.sin(Math.toRadians(i))));
hole.add(coords);
Log.d("HOLE", coords.toString());
}
map.addPolygon(new PolygonOptions()
.addAll(points)
.addHole(hole)
.strokeWidth(0)
.fillColor(R.color.map_overlay_color));
Но расстояние между долготами варьируется в зависимости от положения центра, поэтому я получаю что-то вроде этого. http://i.stack.imgur.com/kSXAB.png Что было бы идеально, если бы оно не было овальным :). Я узнал пример (jsfiddle.net/doktormolle/NLHf9) JS в Интернете, но я не могу найти функцию google.maps.geometry.spherical.computeOffset в java.
Любая помощь будет оценена по достоинству.