новичок, у меня класс:
класс PolyOverlay расширяет оверлей {
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
try {
List<GeoPoint> points = new ArrayList<GeoPoint>();
GeoPoint tmpPoint;
double lat2;
double lng2;
String args[] = {"",""};
args = sitesList.getpolyLine().get(daI).split("\\;");
//Toast.makeText(getApplicationContext(),"T: " + args[0],Toast.LENGTH_SHORT ).show();
for (int i = 0; i < args.length; i++) {
String coordinates2[] = {"",""};
String args2[] = {"",""};
args2 = args[i].split("\\,");
coordinates2[0]= args2[0];
coordinates2[1]= args2[1];
//Toast.makeText(getApplicationContext(),"T: " + coordinates2[0],Toast.LENGTH_SHORT ).show();
lat2= Double.parseDouble(coordinates2[0]);
lng2= Double.parseDouble(coordinates2[1]);
tmpPoint = new GeoPoint((int) (lat2 * 1E6), (int) (lng2 * 1E6) );
points.add(tmpPoint);
}
//for(Polygon polygonTemp : polygonList)
//{
Path p = new Path();
Projection projection = mapView.getProjection();
boolean firstTime = true;
for(GeoPoint geoPoint : points)
{
Point drawPoint = new Point();
projection.toPixels(geoPoint, drawPoint);
if(firstTime)
{
p.moveTo(drawPoint.x, drawPoint.y);
firstTime = false;
}
else
{
p.lineTo(drawPoint.x, drawPoint.y);
}
}
p.setFillType(Path.FillType.EVEN_ODD);
Paint polyPaint = new Paint();
polyPaint.setStrokeWidth(1);
polyPaint.setStyle(Paint.Style.FILL_AND_STROKE);
polyPaint.setAntiAlias(true);
polyPaint.setColor(Color.BLUE);
polyPaint.setAlpha(30);
canvas.drawPath(p, polyPaint);
firstTime = true;
//}
super.draw(canvas, mapView, shadow);
} catch (Exception e) {
Toast.makeText(epapp.this, "Err: " + e, Toast.LENGTH_LONG).show();
}
}
}
Затем внутри цикла xml я делаю это:
for (int i = 0; i < sitesList.getStrap().size(); i++) {
//icons
String pargs[] = sitesList.getCentr().get(i).split("\\,");
String coordinates3[] = {"",""};
coordinates3[0] = pargs[0].toString();
coordinates3[1] = pargs[1].toString();
//Toast.makeText(epapp.this, "Center: " + coordinates3[0], Toast.LENGTH_LONG).show();
double lat2 = Double.parseDouble(coordinates3[0]);
double lng2 = Double.parseDouble(coordinates3[1]);
np = new GeoPoint(
(int) (lat2 * 1E6),
(int) (lng2 * 1E6));
Drawable drawable = this.getResources().getDrawable(R.drawable.iconresidential);
IconItemizedOverlay itemizedoverlay = new IconItemizedOverlay(drawable,this);
OverlayItem overlayitem = new OverlayItem(np, "Property Information", "JONES EMERSON ROBERT JR & SARA MARIA<br>1032 Briarwood Dr Wauchula 33873<br>HARDEE County<br>STRAP 05-34-25-0865-00001-0020");
itemizedoverlay.addOverlay(overlayitem);
mapView.getOverlays().add(itemizedoverlay);
//if (i==1){
//polyString = sitesList.getpolyLine().get(i);
daI=i;
//polygon
PolyOverlay myPolyOverlay = new PolyOverlay();
mapView.getOverlays().add(myPolyOverlay);
//}
}
хорошо, поэтому «проблема» в том, что если я выполняю часть // if (i == 1) {в цикле, где «daI» установлен на «i», мой «Polygon» отображается на карте для этот элемент в XML, если я «REM» его, оверлей Polygon всегда является последним элементом в XML. Список xml всегда содержит 20 элементов, и кажется, что переменная daI всегда равна 19 (последний индекс в списке 0-19)
Очевидно, что не делать что-то, поэтому класс PolyOverlay становится "законченным" до завершения цикла xml ?? Это похоже на то, что цикл xml проходит через наборы «daI» до последнего, а PolyOverlay загружает полигон для этого последнего элемента ...
Мои значки просто прекрасны, кстати, на карте ...