2012-10-31 38 views
-1

我想獲得我的位置的經度和緯度,之後,我將其轉換爲位置。但我不知道我應該如何獲得我的位置的經度和緯度?我應該如何找到我的位置的經度和緯度?

Location.java:

public class Location extends MapActivity { 

MapView map; 
MapController controller; 
GeoPoint mygeo; 
GeoPoint searchgeo; 

@Override 
public void onCreate(Bundle onSavedInstance){ 
    super.onCreate(onSavedInstance); 
    setContentView(R.layout.location); 

    map=(MapView)findViewById(R.id.mapView); 
    LinearLayout zoomLayout=(LinearLayout)findViewById(R.id.zoom); 
    View zoomView=map.getZoomControls(); 
    zoomLayout.addView(zoomView,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,Gravity.BOTTOM+Gravity.CENTER_HORIZONTAL)); 

    map.displayZoomControls(true); 
    // 
    controller=map.getController(); 
    map.setSatellite(true); 

    initMyLocation(); 


} 
private void initMyLocation(){ 
    final MyLocationOverlay overlay=new MyLocationOverlay(this,map); 
    overlay.enableMyLocation(); 
    overlay.enableCompass(); 
    overlay.runOnFirstFix(new Runnable(){ 
     public void run(){ 
      controller.setZoom(8); 
      controller.animateTo(overlay.getMyLocation()); 
     } 
    }); 
    map.getOverlays().add(overlay); 

} 


@Override 
public boolean isRouteDisplayed(){ 
    return false; 
} 
} 

感謝

乾杯

+0

你在地圖中獲取正確的位置嗎? –

+0

是的,我在地圖上得到正確的位置。 –

+0

好了,那麼只要看到我的答案你就會得到經緯度。 –

回答

0

檢查了這一點。它顯示了究竟是如何獲得您的當前位置,並獲得它的緯度和長 GPS not update location after close and reopen app on android

請注意,您必須包括在清單中的必要權限,這項工作

這裏看到https://stackoverflow.com/a/3380641/975959

+0

只能通過google map查找位置的方式是GPS嗎?我可以用其他方式嗎? –

+0

你需要找到你的位置,所以你需要使用GPS,使用WiFI時準確性會提高,但是。 GPS .. –

0

使用位置偵聽器獲取您的當前位置(經度和緯度)。

這調用位置監聽器

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    LocationListener mlocListener = new MyLocationListener(); 
    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 

你可以得到你的經度和緯度在這個類

public class MyLocationListener implements LocationListener 

    { 

    @Override 
    public void onLocationChanged(Location loc) 
    {   
    double longitude = loc.getLongitude(); 
    double latitude = loc.getLatitude(); 
    } 
    @Override 
    public void onProviderDisabled(String provider) 
    { 
     Toast.makeText(getApplicationContext(),"Enable GPS",Toast.LENGTH_SHORT).show(); 
     Intent enablegps = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);  
     startActivity(enablegps); 
    } 

    @Override 
    public void onProviderEnabled(String provider) 
    { 
    Toast.makeText(getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) 
    {} } 

希望它能幫助。

0

尤其是在你的情況下,這樣做是initMyLocation()

double latitude = (overlay.getMyLocation().getLatitudeE6())/ 1e6; 

double longitude = (overlay.getMyLocation().getLongitudeE6())/ 1e6; 
+0

我使用這個,但是當我運行程序時,程序寫入「test has stoped」爲什麼? –

0

請按照下列步驟:

第1步:像下面創建main.xml中有一個按鈕。當你按下它應該敬酒你當前的位置。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<Button 
android:id="@+id/retrieve_location_button" 
android:text="Retrieve Location" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
/> 
</LinearLayout> 

步驟2:創建像下方的活動:

包com.xxx.yyy.zzz;

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 LbsGeocodingActivity extends Activity { 

     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() { 
       @Override 
       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(LbsGeocodingActivity.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(LbsGeocodingActivity.this, message, Toast.LENGTH_LONG).show(); 
      } 

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

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

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

     } 

    } 

第3步:用以下三種權限創建的AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

當你運行這個程序,你會發現Android設備的屏幕上的按鈕。當你按下這個按鈕時,你會看到Toast消息的當前GPS位置的經度和緯度。

相關問題