Boa noite,
Possuo uma aplicação, onde devo exibir Overlays em um mapa. Possuo uma classe que consome um WebService que eu mesmo criei que faz o seguinte:
- Se conecta ao banco de dados e retorna a Latitude e a Longitude dos Overlays.
Até aí tudo bem, tem trazido os dados corretamente, mas na hora que vou criar os Overlays, eu chamo a posição da lista em que o Overlay está, mas não sei onde alimentar a lista.
Veja o código:
package org.ci.geo.route;
import java.util.ArrayList;
import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import android.graphics.Point;
import android.graphics.Canvas;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.widget.Toast;
public class HutsItemizedOverlay extends ItemizedOverlay<OverlayItem> {
Conexao conn = new Conexao();
List<Double> lat = new ArrayList<Double>();//aqui são declaradas as listas
List<Double> lon = new ArrayList<Double>();
public HutsItemizedOverlay(Drawable defaultMarker) {
super(defaultMarker); //se eu alimentar a lista neste construtor, não dá certo
boundCenterBottom(defaultMarker); //o compilador aceita, mas a aplicação trava
populate();
}
@Override
public GeoPoint getCenter() {
Integer averageLat = 0;
Integer averageLon = 0;
for (GeoPoint point : hutPoints) {
averageLat += point.getLatitudeE6();
averageLon += point.getLongitudeE6();
}
averageLat /= hutPoints.length;
averageLon /= hutPoints.length;
return new GeoPoint(averageLat, averageLon);
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, false);
}
public GeoPoint hutPoints[] = new GeoPoint[] {
new GeoPoint((int) (lat.get(0) * 1E6), (int) (lon.get(0) * 1E6)),//aqui eu consumo a lista, mas ela ainda não está alimentada
//new GeoPoint(-25447305,-49307184),
};
@Override
protected OverlayItem createItem(int i) {
OverlayItem item = new OverlayItem(hutPoints[i], "Nome do Local",
"Promocao - Detalhe");
return item;
}
@Override
public int size() {
return hutPoints.length;
}
public boolean onTap(GeoPoint geoPoint, MapView mapView) {
OverlayItem item = this.createItem(1);
Point point = mapView.getProjection().toPixels(geoPoint, null);
RectF rectF = new RectF(point.x - 5, point.y - 5, point.x + 5,
point.y + 5);
boolean pontoClicado = rectF.contains(point.x, point.y);
if (pontoClicado) {
Toast.makeText(
mapView.getContext(),
"Você clicou aqui: " + item.getTitle() + "Acesse "
+ item.getSnippet(), Toast.LENGTH_LONG).show();
return true;
}
return super.onTap(geoPoint, mapView);
}
}
Alguém pode me ajudar?