簡體   English   中英

無法從Android中的地址獲取經度和緯度

[英]Cannot get latitude and longitude from address in android

我正在嘗試從地址獲取緯度和經度,但是它不起作用

Geocoder geoCoder = new Geocoder(MainActivity.this);    

try {
       List<Address> addressList = geoCoder.getFromLocationName("Salem, Tamil Nadu", 5);
       if (addressList != null && addressList.size() > 0) {
           double lat = addressList.get(0).getLatitude();
           double lng = addressList.get(0).getLongitude();
             Toast.makeText(MainActivity.this, " This is for the :"+lat+"long:"+lng, Toast.LENGTH_SHORT).show();

       }
   } catch (Exception e) {
       e.printStackTrace();
   }

它甚至沒有顯示空的吐司消息。 吐司消息也不能正常工作。 我認為 。 if (addressList != null && addressList.size() > 0)行之后沒有任何執行

我刪除了這個條件,即使它也無法正常工作。

然后addressList.size()值為0。即使我在getFromLocationName處給出正確的地址

我嘗試過的是答案,即使它不起作用,以及如何從p1對象中緯度和經度。 吐司消息也無法正常工作

 Geocoder coder = new Geocoder(MainActivity.this);
 List<Address> address;
 GeoPoint p1 = null;

 try {
     address = coder.getFromLocationName("Salem, Tamil Nadu",5);
     if (address == null) {

     }
     Address location = address.get(0);
     location.getLatitude();
     location.getLongitude();

     p1 = new GeoPoint((int) (location.getLatitude() * 1E6),
                       (int) (location.getLongitude() * 1E6));

     Toast.makeText(MainActivity.this, " this line works", Toast.LENGTH_SHORT).show();

     }
 catch(Exception ex){

 }

這也是代碼不起作用,我在textview中看不到任何東西(來源)

 double lat= 0.0, lng= 0.0;

 Geocoder geoCoder = new Geocoder(MainActivity.this);    
 try 
 {
     List<Address> addresses = geoCoder.getFromLocationName("Salem, Tamil Nadu, India" , 1);
     if (addresses.size() > 0) 
     {            
         GeoPoint p = new GeoPoint(
                 (int) (addresses.get(0).getLatitude() * 1E6), 
                 (int) (addresses.get(0).getLongitude() * 1E6));

         lat=p.getLatitudeE6()/1E6;
         lng=p.getLongitudeE6()/1E6;

         Log.d("Latitude is:", ""+lat);
     Log.d("Longitude is:", ""+lng);
     source.setText(""+lat);

     }
 }

 catch(Exception e)
 {
   e.printStackTrace();
 }

錯誤:

02-05 09:42:01.897: E/dalvikvm(1336): Could not find class 'com.google.android.maps.GeoPoint', referenced from method in.wptrafficanalyzer.locationplacesautocomplete.MainActivity$1.onClick
02-05 09:42:01.897: W/dalvikvm(1336): VFY: unable to resolve new-instance 4019 (Lcom/google/android/maps/GeoPoint;) in Lin/wptrafficanalyzer/locationplacesautocomplete/MainActivity$1;

所以我加了

   <uses-library android:name="com.google.android.maps" /> 

但是,如果我使用這條線,那么我的模擬器無法正常工作,則顯示如下錯誤

[2015-02-05 15:10:17 - LocationPlacesAutocomplete] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
[2015-02-05 15:10:17 - LocationPlacesAutocomplete] Please check logcat output for more details.
[2015-02-05 15:10:17 - LocationPlacesAutocomplete] Launch canceled!

所以我把它刪除了。 我現在應該怎么辦 。

這是我的清單文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="in.wptrafficanalyzer.locationplacesautocomplete"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <uses-permission android:name="in.wptrafficanalyzer.locationplacesautocomplete.permission.MAPS_RECEIVE" />

    <permission
        android:name="in.wptrafficanalyzer.locationplacesautocomplete.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="in.wptrafficanalyzer.locationplacesautocomplete.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />


    </application>

</manifest>

此代碼段對我有用。

public  void getLatLongFromGivenAddress(String address)
    {
          double lat= 0.0, lng= 0.0;

        Geocoder geoCoder = new Geocoder(this);    
        try 
        {
            List<Address> addresses = geoCoder.getFromLocationName(address , 1);
            if (addresses.size() > 0) 
            {            
                GeoPoint p = new GeoPoint(
                        (int) (addresses.get(0).getLatitude() * 1E6), 
                        (int) (addresses.get(0).getLongitude() * 1E6));

                lat=p.getLatitudeE6()/1E6;
                lng=p.getLongitudeE6()/1E6;

                Log.d("Latitude", ""+lat);
            Log.d("Longitude", ""+lng);
            }
        }
        catch(Exception e)
        {
          e.printStackTrace();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM