【问题标题】:Cannot get latitude and longitude from address in android无法从android中的地址获取纬度和经度
【发布时间】:2015-02-05 17:45:27
【问题描述】:

我正在尝试从地址中获取纬度和经度,但它不起作用

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();
   }

它甚至没有显示空的 toast 消息。吐司消息也不起作用。我认为 。在if (addressList != null &amp;&amp; addressList.size() &gt; 0) 行之后没有执行任何操作

如果条件即使它不起作用,我也将其删除。

那么addressList.size() 的值为0。即使我在getFromLocationName 给出正确的地址

我试过的是答案,即使它不工作以及如何从p1 对象获取 lat 和 lng。吐司消息也不起作用

 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(Source) 中看不到任何内容

 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>

【问题讨论】:

    标签: android google-maps google-maps-android-api-2


    【解决方案1】:

    这个 sn-p 对我有用。

    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();
            }
        }
    }
    

    【讨论】:

    • 如何从 tat p1 objetc 获取 lat 和 lng
    • The constructor Geocoder(new View.OnClickListener(){}) is undefined `Geocoder coder = new Geocoder(this);` 出现错误,所以我改为 MainActivity.this,但您的代码无法正常工作
    • 纬度无法解析或不是此行中的字段double x=p1.latitude;
    • 朋友们请帮帮我!如果它有效,我会标记你的答案,请
    • 您确定已导入播放服务并使用所需权限更新您的清单文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多