2011-07-01 69 views
2

我用下面的代码覆盖显示显示上点击叠加

p = new GeoPoint((int) (addresses.get(0).getLatitude() * 1E6), 
        (int) (addresses.get(0).getLongitude() * 1E6)); 

      controller = mapview.getController(); 
      controller.setZoom(12); 

      MapOverlay mapOverlay = new MapOverlay(map.this, p); 
      List<Overlay> listOfOverlays = mapview.getOverlays(); 
      listOfOverlays.add(mapOverlay); 

      controller.animateTo(p, new Runnable() { 
       public void run() { 
        controller.setZoom(12); 
       } 
      }); 
      mapview.invalidate(); 

,并在覆盖绘制文件举杯如下...

super.draw(canvas, mapView, shadow); 
    Point screenPts = new Point(); 
    mapView.getProjection().toPixels(p, screenPts); 

    Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.overlay); 
    canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 32, null); 

谁能请告诉我,当我点击叠加层时,需要做些什么才能显示敬酒?

回答

0

覆盖覆盖的方法here并调用Toast。

+0

onTap方法适用于整个mapview。我希望敬酒应该只显示在特定的叠加而不是整个地图上。 – Antrromet

+0

活动顶部显示“Toast”:我不确定自己完全明白自己想要做什么,但如果覆盖Overlay的“onTap”方法,则任何点击叠加层都会显示Toast。这不是你想要的吗? – Femi

+0

啊。您想要使用ItemizedOverlay(请参阅http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/ItemizedOverlay.html),然后覆盖'onTap(int index )'方法(请参阅http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/ItemizedOverlay.html#onTap(int))。 – Femi

0

在这里,我给了我以前给出的答案的链接,你应该阅读与评论的答案,然后你会发现你的答案。

if(moreArrowTappedEvent(mapView,p) && isRemovePriorPopup) { 
Toast.makeText(this.mapLocationViewer.getContext(), "I am hit", Toast.LENGTH_LONG).show(); 
flag = true; mapView.invalidate(); 
mHandler.postDelayed(new Runnable() { 
@Override public void run() { 

// TODO自动生成方法存根 标志=假; mapView.invalidate(); 200});
}

Custom tap window on Google Map

我已经做了你想要的。

我希望这是帮助。