Как я могу получить местоположение пользователя и показать ему карту - PullRequest
0 голосов
/ 04 марта 2012

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

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

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

Я ищу в 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-Google API работает с другой деятельностью, а не только карта? * * 1010

  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 вы мой герой! ПОЖАЛУЙСТА, ПОЖАЛУЙСТА!

1 Ответ

0 голосов
/ 04 марта 2012

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

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