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

私があなたを正しく理解しているなら、あなたはこれを2つの方法で行うことができます。

1)xmlレイアウトに入力ボックスとボタンを追加し、クリックして場所を設定します。

2)onTouchをオーバーライドすると、アラートボックスがポップアップ表示され、longとlatを要求します。次に、それに応じて設定します。

これらは両方ともoverLayを設定します:http://developer.android.com/resources/tutorials/views/hello-mapview.html

多くのオーバーレイチュートリアルの1つ: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 に答える