Android I';我在应用程序中使用反向地理编码。为什么每次都不能正常工作?

Android I';我在应用程序中使用反向地理编码。为什么每次都不能正常工作?,android,sms,Android,Sms,对于我们中的一些人来说,会显示正确的位置。但对我们许多人来说,这个位置并没有显示出来。为什么会这样?如果在少数情况下工作正常,那么代码应该是正确的吗?为什么它不适用于其他人?是谷歌的服务器问题吗? 实际上,在反向编码中,是不是像geocoder类从geocoding程序中获取纬度和经度,并返回lat的相应地址以及服务器中与之匹配的long public void onClick(View arg0) { // create class object

对于我们中的一些人来说,会显示正确的位置。但对我们许多人来说,这个位置并没有显示出来。为什么会这样?如果在少数情况下工作正常,那么代码应该是正确的吗?为什么它不适用于其他人?是谷歌的服务器问题吗? 实际上,在反向编码中,是不是像geocoder类从geocoding程序中获取纬度和经度,并返回lat的相应地址以及服务器中与之匹配的long

public void onClick(View arg0) {
            // create class object
            gps = new GPSTracker(ScreenActivity.this);

            // check if GPS enabled
            if(gps.canGetLocation()){

                latitude = Double.toString(gps.getLatitude());
             longitude = Double.toString(gps.getLongitude());

                     Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude , Toast.LENGTH_LONG).show();


                     add= getMyLocationAddress(latitude,longitude);
                     Toast.makeText(getBaseContext(),add,Toast.LENGTH_SHORT).show();

            }


            else

            {
                // can't get location
                // GPS or Network is not enabled
                // Ask user to enable GPS/network in settings
                gps.showSettingsAlert();
            }


        }

    });

    locationButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            try {
             SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(AddContactsActivity.phno1, null,latitude+longitude+add, null, null);
                smsManager.sendTextMessage(AddContactsActivity.phno2, null,latitude+longitude+add, null, null);
                Toast.makeText(getApplicationContext(), "Message Sent",
                        Toast.LENGTH_LONG).show();
          } catch (Exception ex) {
            Toast.makeText(getApplicationContext(),
                ex.getMessage().toString(),
                Toast.LENGTH_LONG).show();
            ex.printStackTrace();
          }

        }


    });

有两个错误来源:

  • 您在查询中发送的位置不准确。它可能相距几十米
  • 反向地理编码数据库的质量不高。您正在查询的服务维护一个地理位置数据库,以提供地址。这些数据的质量将基本上决定反应的好坏 如果你想得到更好的答案,你必须改善这两方面。改进数据库的成本很高,因为您需要有人四处移动并获取数据


    基本上,你不应该期望反向地理编码能给你完美的答案。如果它能给你一些接近的东西,那么一切都正常。为了改善您的响应,您可能能做的最好的事情就是提高定位精度

    可能您只使用网络位置或设备找不到卫星。
    或者其他一些应用程序关闭位置服务或您的应用程序(例如某些电源优化)

    请帮助我们帮助您,并在您的问题中发布您的代码。至少在某些情况下,关闭地址是可以的。但对于少数ppl,它显示为无法获取地址。如果服务返回响应,它们可能在数据库中没有地址。如果它根本不返回响应,那么您的连接有问题。为什么他们不能至少返回附近的位置?这是您需要询问服务提供商的问题。如果您需要返回某些内容,您可以尝试使用不同的纬度和经度值查询附近的其他位置。如何提高准确性?