2012-03-04 3 views
0

у меня есть вопросы, которые я действительно нужна помощь на нем: я разрабатывать приложения и я хочу:, как я могу получить местоположение пользователя и показать ему карту

1-получить местоположение пользователя и показать его в карта. 2- пользователь может поместить булавку в любом месте на карте, и я должен согласовать этот вывод и сохранить его в переменной

Примечание: мое приложение в 2.1 должно ли я использовать API Google? если да, поддерживает ли Google API какую-либо деятельность, а не карты?

я поиск в Google и найти этот код:

package com.java.locate; 

import android.app.Activity; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 



    public class AndroidLbsGeocodingProjectActivity extends Activity { 
    /** Called when the activity is first created. */ 
    private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters 
    private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in Milliseconds 
    protected LocationManager locationManager; 
    protected Button retrieveLocationButton; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    retrieveLocationButton = (Button) findViewById(R.id.retrieve_location_button); 

      locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

      locationManager.requestLocationUpdates(
         LocationManager.GPS_PROVIDER, 
        MINIMUM_TIME_BETWEEN_UPDATES, 
         MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, 
        new MyLocationListener() 
       ); 

      retrieveLocationButton.setOnClickListener(new OnClickListener() { 

        public void onClick(View v) { 
         showCurrentLocation(); 
        } 
      });  

      } 

      protected void showCurrentLocation() { 

       Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

       if (location != null) { 
        String message = String.format(
          "Current Location \n Longitude: %1$s \n Latitude: %2$s", 
          location.getLongitude(), location.getLatitude() 
        ); 
        Toast.makeText(AndroidLbsGeocodingProjectActivity.this, message, 
          Toast.LENGTH_LONG).show(); 
       } 

      } 

      private class MyLocationListener implements LocationListener { 

       public void onLocationChanged(Location location) { 
        String message = String.format(
         "New Location \n Longitude: %1$s \n Latitude: %2$s", 
          location.getLongitude(), location.getLatitude() 
        ); 
        Toast.makeText(AndroidLbsGeocodingProjectActivity.this, message, Toast.LENGTH_LONG).show(); 
       } 

       public void onStatusChanged(String s, int i, Bundle b) { 
        Toast.makeText(AndroidLbsGeocodingProjectActivity.this, "Provider status changed", 
          Toast.LENGTH_LONG).show(); 
       } 

      public void onProviderDisabled(String s) { 
        Toast.makeText(AndroidLbsGeocodingProjectActivity.this, 
          "Provider disabled by the user. GPS turned off", 
          Toast.LENGTH_LONG).show(); 
       } 

       public void onProviderEnabled(String s) { 
        Toast.makeText(AndroidLbsGeocodingProjectActivity.this, 
          "Provider enabled by the user. GPS turned on", 
          Toast.LENGTH_LONG).show(); 
       } 

     } 




} 

это еще один код, это с помощью Google API, но у меня есть 2 проблемы в использовании этого кода: 1-он не извлекает пользователя местоположение, это просто показать мне карты. 2-is google API работает с другой деятельностью, а не только с картой?

package our.google.maps; 

    import java.util.List; 
    import java.util.Locale; 

    import com.google.android.maps.GeoPoint; 
    import com.google.android.maps.MapActivity; 
    import com.google.android.maps.MapController; 
    import com.google.android.maps.MapView; 
    import com.google.android.maps.MyLocationOverlay; 
    import com.google.android.maps.Overlay; 

    import android.app.AlertDialog; 
    import android.content.DialogInterface; 
    import android.location.Geocoder; 
    import android.location.Location; 
    import android.location.LocationListener; 
    import android.os.Bundle; 
    import android.view.MotionEvent; 
    import android.widget.Toast; 

    public class MapsActivity extends MapActivity { 
/** Called when the activity is first created. */ 
long start; 
long stop; 
MyLocationOverlay compass; 
MapController controller; 
MapView map; 
    //136 
int x,y; 
GeoPoint touchedPoint; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    map=(MapView) findViewById(R.id.mvMain); 
    map.setBuiltInZoomControls(true); 
    Touchy t = new Touchy(); 
    List<Overlay> overlaylist= map.getOverlays(); 
    overlaylist.add(t); 
    compass = new MyLocationOverlay (MapsActivity.this, map); 
    overlaylist.add(compass); 
    //map controller to go to Specific Location n36eeh el 6ol & el 3r'9 135 

    controller=map.getController(); 
    GeoPoint point = new GeoPoint (51643234 , 7848593); 
    controller.animateTo(point); 
    controller.setZoom(6); 

} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    compass.disableCompass(); 

    super.onPause(); 
    } 
@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    compass.enableCompass(); 
    super.onResume(); 
} 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 
class Touchy extends Overlay { 
    public boolean onTouchEvent(MotionEvent e,MapView m){ 
     if(e.getAction() == MotionEvent.ACTION_DOWN){ 
      start = e.getEventTime(); 
      x = (int) e.getX(); 
      y = (int) e.getY(); 
      touchedPoint = map.getProjection().fromPixels(x, y); 

     } 
     if (e.getAction() == MotionEvent.ACTION_UP) { 
      stop =e.getEventTime(); 
     } 
     if(stop - start >1500) { 
      AlertDialog alert = new AlertDialog.Builder(MapsActivity.this).create(); 
     alert.setTitle("Pick an option"); 
     alert.setMessage(" i told u to pick an option"); 
     alert.setButton("place a pin", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 

      } 
     }); 

    alert.setButton2("get an address", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
       Geocoder geocode = new Geocoder (getBaseContext(),Locale.getDefault()); 
     try { 

     } 
     finally{}}} 
     ); 

     alert.setButton3("option3 ", new DialogInterface.OnClickListener() { 

public void onClick(DialogInterface dialog, int which) { 
    // TODO Auto-generated method stub 

} 
    }); 
    alert.show(); 
     return true; 
     } 
    return false; 
    } 
} 
private class MyLocationListener implements LocationListener{ 


    public void onLocationChanged1(Location location) { 
     String message = String.format(
      "New Location \n Longitude: %1$s \n Latitude: %2$s", 
       location.getLongitude(), location.getLatitude() 
     ); 
     Toast.makeText(MapsActivity.this, message, Toast.LENGTH_LONG).show(); 
    } 

    public void onStatusChanged(String s, int i, Bundle b) { 
     Toast.makeText(MapsActivity.this, "Provider status changed", 
       Toast.LENGTH_LONG).show(); 
    } 

public void onProviderDisabled(String s) { 
     Toast.makeText(MapsActivity.this, 
       "Provider disabled by the user. GPS turned off", 
       Toast.LENGTH_LONG).show(); 
    } 

    public void onProviderEnabled(String s) { 
     Toast.makeText(MapsActivity.this, 
       "Provider enabled by the user. GPS turned on", 
       Toast.LENGTH_LONG).show(); 
    } 

    public void onLocationChanged(Location location) { 
     // TODO Auto-generated method stub 

    } 

} 

} 

также, если мой код неправильный, не могли бы вы дать мне правильный код? Участники StackOverFlow вы - мой герой! Помоги мне, пожалуйста!

ответ

0

Вы можете использовать Карты Google. Вам понадобится ключ Map Api. Если вы используете кодировку с помощью Eclipse, тогда вы можете следовать процедуре, указанной по ссылке http://mobiforge.com/developing/story/using-google-maps-android

+0

Я обновляю свой вопрос, я уже делаю код API Google, но можете ли вы ответить на мой вопрос? Спасибо за быстрый повтор, ожидание –

+0

расширяет MapActivity реализует LocationListener – Sagii

+0

Использование LocationListener класса для получения широты и долготы местоположения пользователей – Sagii

Смежные вопросы