所以我想返回我在地图上触摸的任何点的地理位置,但是我的代码在移动/点击屏幕上没有任何作用.我是
Java和
Android的新手,所以我认为它与我在java中缺乏编码知识有关.这是我的代码
package sdpd.loc; import sdpd.loc.createNote.mapOverlay; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapView; import android.os.Bundle; import android.view.MotionEvent; import android.widget.Toast; import android.app.Activity; public class createNote extends MapActivity { @Override protected boolean isRouteDisplayed() { return false; } @Override public void onCreate(Bundle savedInstanceStates){ super.onCreate(savedInstanceStates); setContentView(R.layout.map); MapView mapview=(MapView)findViewById(R.id.MapView); mapview.setBuiltInZoomControls(true); } class mapOverlay extends com.google.android.maps.Overlay{ @Override public boolean onTouchEvent(MotionEvent event,MapView mapview){ if (event.getAction()==1){ GeoPoint p=mapview.getProjection().fromPixels((int)event.getX(),(int)event.getY()); Toast.makeText(getBaseContext(),p.getLatitudeE6()/1E6 + "," + p.getLongitudeE6()/1E6,Toast.LENGTH_SHORT).show(); } return false; } }
}
如何让它上班?
解决方法
您没有注册您的自定义Overlay类mapOverlay(btw.类名始终使用Java中的大写字母)映射到MapView.通过创建类的实例并将其添加到MapView的叠加集合来执行此操作.
您可以通过将以下代码附加到活动的onResume()方法来实现.
public void onCreate(Bundle savedInstanceStates){ super.onCreate(savedInstanceStates); setContentView(R.layout.map); MapView mapview=(MapView)findViewById(R.id.MapView); mapview.setBuiltInZoomControls(true); mapOverlay myOverlay = new mapOverlay(); List<Overlay> overlays = mMapView.getOverlays(); overlays.add(myOverlay); }
现在您的叠加层已注册,触摸事件应处理.