1

我写了一个地图查看器,我想从用户那里获取纬度和经度,然后向他展示位置。我使用菜单来完成这项工作。但我不知道如何向他展示一些输入值的东西。这是我的代码。

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个问题。首先,如何为我的位置创建菜单。我必须使用上下文菜单或其他东西。第二,如果我得到位置,我可以将它们直接输入到我的纬度和经度吗?在我的代码中,我使用用户的默认位置。

4

3 回答 3

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(); 
    } 
于 2012-05-21T15:03:27.020 回答
0

好吧,如果我对您的理解正确,您可以通过两种方式做到这一点。

1)在您的 xml 布局中添加一个输入框和按钮,然后单击设置您的位置。

2) 覆盖您的 onTouch 并弹出警告框并询问经纬度。然后相应地设置它。

这两个都将设置你的覆盖:http: //developer.android.com/resources/tutorials/views/hello-mapview.html

许多覆盖教程之一:http ://eagle.phys.utk.edu/guidry/android/mapOverlayDemo.html

于 2012-05-21T13:55:14.943 回答
0

如果您只想显示您当前的位置,您可以使用 MyLoicationOverlay 类:

miPunto = new MyLocationOverlay(this, eMapa);
            eMapa.getOverlays().add(miPunto);
            miPunto.enableCompass();
            miPunto.enableMyLocation();

如果您不使用它,您必须获取您的位置,然后使用 itemizedoverlay

于 2012-05-21T14:16:58.070 回答