2013-04-08 63 views
0

我想要檢測用手指觸摸屏幕上的地圖的座標。問題是當我用手指觸摸屏幕時,座標不顯示烤麪包。 我正在使用Google Maps v2。我的代碼:檢測屏幕上的座標

@Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    if (event.getAction() == MotionEvent.ACTION_POINTER_DOWN) 
    { 
     CrearLugar(); 
    } 

    return super.onTouchEvent(event); 
} 

public void CrearLugar() 
{ 
    final GoogleMap mMap=null; 

    mMap.setOnMapClickListener(new OnMapClickListener() { 
     public void onMapClick(LatLng point) { 
      Projection proj=mMap.getProjection(); 
      Point coord = proj.toScreenLocation(point); 

      Toast.makeText(
       MapaLugaresActivity.this, 
       "Click\n" + 
       "Lat: " + point.latitude + "\n" + 
       "Lng: " + point.longitude + "\n" + 
       "X: " + coord.x + " - Y: " + coord.y, 
       Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

一切都只是當我觸摸屏幕用手指正確。當我這樣做時,我想顯示所觸摸的地點的座標,但我什麼也看不到,只有地圖。

怎麼了?

謝謝。

+0

爲什麼你叫裏面CrearLugar()被稱爲觸摸地圖上點擊監聽器? – 2013-04-08 19:28:21

+0

我想分開代碼以便更清楚。 – axmug 2013-04-09 16:09:38

+0

MapaLugaresActivity是地圖加載的活動,還是另一個類? – 1088 2013-06-10 13:14:20

回答

1

點擊監聽器必須在活動的任何創建者(onCreate,onResume,onPause,...)中設置。請注意,您正在將偵聽器設置爲(偵聽)以進行更改。 您仍然可以使用onTouch重寫方法。它有助於獲得用戶在屏幕上點擊的絕對座標,但它完全獨立於地圖。 (順便說一下,你需要什麼樣的absoluta座標?)。

試一下:

@Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    Toast.makeText(
      MapaLugaresActivity.this, 
      "Click\n" + 
      "X: " + event.getX() + " - Y: " + event.getY(), 
      Toast.LENGTH_SHORT).show(); 

    return super.onTouchEvent(event); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Inflate view 
    // Inflate map view 

    mMap.setOnMapClickListener(new OnMapClickListener() { 
     public void onMapClick(LatLng point) { 
      Projection proj=mMap.getProjection(); 
      Point coord = proj.toScreenLocation(point); 

      Toast.makeText(
      MapaLugaresActivity.this, 
      "Click\n" + 
      "Lat: " + point.latitude + "\n" + 
      "Lng: " + point.longitude + "\n", 
      Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
+0

感謝José的回答,但是當我運行應用程序時,它以這樣的消息結束:不幸的是,Mapa已經停止。 – axmug 2013-04-09 17:05:05

+0

是的,你必須填寫你的代碼。你是否誇大了你的地圖?你能複製代碼嗎? – 2013-04-09 19:48:14