在地图中设置纬度和经度

时间:2012-05-21 13:33:23

标签: android map location latitude-longitude

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

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

3 个答案:

答案 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(); 
    }