2011-06-17 1 views
1

Надеюсь, кто-то может с этим справиться. Я создал приложение карты, которое помещает значок в местоположения из файла xml, но мне нужно сделать значки интерактивными, чтобы открыть страницу с информацией о местоположении.Android: создание оверлейных изображений с возможностью нажатия

В настоящее время у меня есть это под класс GPSLocationListener реализует LocationListener:

MapOverlay mapOverlay = new MapOverlay(); 
mapOverlay.setPointToDraw(point, "pointer", null); 

List<Overlay> listOfOverLays = mapView.getOverlays(); 
listOfOverLays.clear(); 

// doc is data from xml file     
NodeList nodes = doc.getElementsByTagName("result"); 

listOfOverLays.add(mapOverlay); 

for (int i = 0; i < nodes.getLength(); i++) {      

    Element e = (Element)nodes.item(i); 

    String locId = XMLfunctions.getValue(e, "id"); 
    String aString = XMLfunctions.getValue(e, "lat"); 
    double lat = Double.parseDouble(aString); 
    String bString = XMLfunctions.getValue(e, "long"); 
    double longi = Double.parseDouble(bString); 


    // here, 'point' and mapOverlay have already been created and added         
    GeoPoint point2 = new GeoPoint((int) (lat * 1E6), (int) (longi * 1E6)); 
    MapOverlay mapOverlay2 = new MapOverlay(); 
    mapOverlay2.setPointToDraw(point2, "place", XMLfunctions.getValue(e, "name")); 
    OverlayItem item = new OverlayItem(point2, "", ""); 
    listOfOverLays.add(mapOverlay2); 
    } 

Вне этого класса У меня есть класс для создания иконки местоположение и присвоить имена местоположение:

class MapOverlay extends Overlay{ 
    private GeoPoint pointToDraw; 
    private String pointerIcon; 
    private String locName; 

    public void setPointToDraw(GeoPoint point, String pointer, String locationName){ 
     pointToDraw = point; 
     pointerIcon = pointer; 
     locName = locationName; 
    } 

    @Override 
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when){ 
     super.draw(canvas, mapView, shadow); 

     // convert point to pixels 
     Point screenPts = new Point(); 

     mapView.getProjection().toPixels(pointToDraw, screenPts); 

     // add marker 
     if(pointerIcon == "pointer"){ 

      Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pointer); 
      canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 22, null); 
     } 
     else if(pointerIcon == "bar"){ 
      Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pointer2); 
      canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 15, null); 
      Paint paint = new Paint(); 
      paint.setColor(Color.BLACK); 
      paint.setTextSize(20); 
      canvas.drawText(locName, screenPts.x, screenPts.y-20, paint); 
     } 

     return true; 
    } 
} 

I просто нужно сделать изображение «pointer2» доступным и открыть новую страницу с помощью «locId», чтобы я знал, какое местоположение было нажато. Я много читал об этом, но ничего не сработало. Любая информация, которая может помочь мне ближе к этой работе, очень ценится.

ответ