我写了一个地图查看器,我想从用户那里获得纬度和经度,然后向他显示位置。 我使用菜单进行这项工作。但我不知道如何向他展示一些值得进入的东西。这是我的代码。
public class main extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView view = (MapView) findViewById(R.id.themap);
view.setBuiltInZoomControls(true);
final MapController control = view.getController();
LocationManager manager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
LocationListener listener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
control.setCenter(new GeoPoint((int)location.getLatitude(), (int)location.getLongitude()));
}
};
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
所以我有2个问题。首先,我如何为我的位置创建菜单。我必须使用上下文菜单或其他东西。 第二,如果我得到位置,我可以直接输入我的纬度和经度? 在我的代码中,我使用了用户的默认位置。
答案 0 :(得分:0)
如果我正确理解你,你可以通过两种方式做到这一点。
1)在xml布局中添加一个输入框和按钮,然后单击设置您的位置。
2)覆盖你的onTouch并弹出并提示警告框并询问长和lat。然后相应地设置它。
这两个都将设置您的overLay:http://developer.android.com/resources/tutorials/views/hello-mapview.html
许多叠加教程之一:http://eagle.phys.utk.edu/guidry/android/mapOverlayDemo.html
答案 1 :(得分:0)
如果您只想显示当前位置,可以使用MyLoicationOverlay类:
miPunto = new MyLocationOverlay(this, eMapa);
eMapa.getOverlays().add(miPunto);
miPunto.enableCompass();
miPunto.enableMyLocation();
如果您不想使用此功能,您必须获取您的位置,然后使用itemizedoverlay
答案 2 :(得分:0)
这是我的代码,它适用于我
Drawable marker=getResources().getDrawable(R.drawable.mapmarker);
marker.setBounds( (int) (-marker.getIntrinsicWidth()/2),
-marker.getIntrinsicHeight(),
(int) (marker.getIntrinsicWidth()/2),
0);
InterestingLocations funPlaces =
new InterestingLocations(marker);
在此处添加叠加项目。
mapView.getOverlays().add(funPlaces);
class InterestingLocations extends ItemizedOverlay {
private ArrayList<OverlayItem> locations =
new ArrayList<OverlayItem>();
private GeoPoint center = null;
public InterestingLocations(Drawable marker)
{
super(marker);
// Put your custom Lat, Long in here ,
GeoPoint disneySevenLagoon =
new GeoPoint((int)(28.410067*1000000),
(int)(-81.583699*1000000));
locations.add(new OverlayItem(disneySevenLagoon ,
"Seven Seas Lagoon", "Seven Seas Lagoon"));
populate();
}