2017-01-18 15 views
3

Я пытаюсь нарисовать свободную форму на карте Google до сих пор. Я могу успешно нарисовать полилинию и многоугольник благодаря @Chintan Khetiya ответ на draw free hand polygon in Google map V2 in Android и Draw a path on maps, но когда я пытаюсь рисовать многоугольник например, ниже изображения, то «polygonOptions.fillColor (цвет)« dt work Я пытаюсь преобразовать точку в два многоугольника, но его также можно использовать, чтобы любое тело предлагало или хотели поделиться любым намеком или лучшим решением для рисования свободной руки форма с цветом заливки с использованием google maps polygon.Android Google отображает как рисовать сложный многоугольник с fillColor

polygon with colid

вот как я рисовать полигон

fram_map.setOnTouchListener(new View.OnTouchListener() {  
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     float x = event.getX(); 
     float y = event.getY(); 

     int x_co = Math.round(x); 
     int y_co = Math.round(y); 

     projection = mMap.getProjection(); 
     Point x_y_points = new Point(x_co, y_co); 

     LatLng latLng = mMap.getProjection().fromScreenLocation(x_y_points); 
     latitude = latLng.latitude; 

     longitude = latLng.longitude; 

     int eventaction = event.getAction(); 
     switch (eventaction) { 
      case MotionEvent.ACTION_DOWN: 
       // finger touches the screen 
       val.add(new LatLng(latitude, longitude)); 

      case MotionEvent.ACTION_MOVE: 
       // finger moves on the screen 
       val.add(new LatLng(latitude, longitude)); 

      case MotionEvent.ACTION_UP: 
       // finger leaves the screen 
       Draw_Map(); 
       break; 
     } 

     if (Is_MAP_Moveable == true) { 
      return true; 

     } else { 
      return false; 
     } 
    } 
}); 

public void Draw_Map() { 
    rectOptions = new PolygonOptions(); 
    rectOptions.addAll(val); 
    rectOptions.strokeColor(Color.BLUE); 
    rectOptions.strokeWidth(7); 
    rectOptions.fillColor(Color.CYAN); 
    polygon = mMap.addPolygon(rectOptions); 
} 

аналогичная функция используется в "Zillow недвижимости андроид приложение"

ответ

1

, как полигон документации (https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polygon) показывает в Приведенный пример, вы должны закрыть настройку формы, как последняя LatLng, копия первой.

Итак, вы должны отредактировать своего слушателя, добавив ссылку на LatLng, полученную при выполнении ACTION_DOWN, и когда вы выполняете ACTION_UP, вы должны вставить новый LatLng с теми же коордами ранее упомянутой точки.

Счастливое кодирование!

+0

Я также пробовал это, но полигон не заполнялся правильно. что мне делать? –

+0

@AhmadVatani У вас есть пересечения в вашем нарисованном полигоне? потому что, если я хорошо помню, полигон не будет заполняться, если есть пересечения (не найдено в документации, но на некоторых устройствах) –

+0

Да. Есть ли решение? –

 Смежные вопросы

  • Нет связанных вопросов^_^