/*
* Copyright (c) 2015 Daimler AG / Moovel GmbH
*
* All rights reserved
*/
package com.car2go.maps.baidu.model.overlay;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.Stroke;
import com.car2go.maps.baidu.model.BaiduToModelConverter;
import com.car2go.maps.baidu.model.ModelToBaiduConverter;
import com.car2go.maps.model.LatLng;
import com.car2go.maps.model.Polygon;
import java.util.ArrayList;
import java.util.List;
public class BaiduPolygon implements Polygon {
private com.baidu.mapapi.map.Polygon polygon;
private List<com.baidu.mapapi.map.Polygon> holePolygons = new ArrayList<>();
private BaiduMap map;
public BaiduPolygon(BaiduMap map) {
this.map = map;
}
public BaiduPolygon(BaiduMap map, com.baidu.mapapi.map.Polygon polygon) {
this.map = map;
this.polygon = polygon;
}
@Override
public void setHoles(List<List<LatLng>> holes) {
holePolygons.clear();
for (List<LatLng> hole : holes) {
com.baidu.mapapi.map.Polygon polygon = (com.baidu.mapapi.map.Polygon) map.addOverlay(new PolygonOptions()
.fillColor(0x4499FF99)
.points(ModelToBaiduConverter.convert(hole))
.stroke(new Stroke(8, 0xa600aff8)));
holePolygons.add(polygon);
}
}
@Override
public List<LatLng> getPoints() {
return BaiduToModelConverter.convert(polygon.getPoints());
}
@Override
public void setVisible(final boolean visible) {
setVisisbleIfNeeded(polygon, visible);
for (com.baidu.mapapi.map.Polygon hole : holePolygons) {
setVisisbleIfNeeded(hole, visible);
}
}
private void setVisisbleIfNeeded(com.baidu.mapapi.map.Polygon polygon, boolean visible) {
if (polygon == null) {
return;
}
if (polygon.isVisible() != visible) {
polygon.setVisible(visible);
}
}
@Override
public void remove() {
if (polygon != null) {
polygon.remove();
}
for (com.baidu.mapapi.map.Polygon hole : holePolygons) {
hole.remove();
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof BaiduPolygon)) return false;
BaiduPolygon that = (BaiduPolygon) o;
return polygon.equals(that.polygon);
}
@Override
public int hashCode() {
return polygon.hashCode();
}
}