2017-01-23 6 views
0

Я пробовал сетевые коды и провайдеры на основе GPs, чтобы получить идеальное местоположение, где находится устройство, но всегда есть неточность в lat и lon. Я использовал http://www.vogella.com/tutorials/AndroidLocationAPI/article.html для получения значений и получил значение lat как 19.10295898 и lon как 72.8866532. Где, как по картам google, это lat, lon - 19.103114,72.8867978. Есть разница. Можем ли мы на самом деле сопоставить это как-то. Код, используемый ниже:Получить Латс и Лог фактического местоположения без карт Google

package jss.fusedlocation; 

import android.app.Activity; 
import android.content.Context; 
import android.location.Criteria; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.google.android.gms.nearby.messages.Distance; 

/** 
* Created by DELL WORLD on 1/23/2017. 
*/ 

public class ShowLocationActivity extends Activity implements LocationListener { 
    private TextView latituteField; 
    private TextView longitudeField; 
    private LocationManager locationManager; 
    private String provider; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     latituteField = (TextView) findViewById(R.id.TextView02); 
     longitudeField = (TextView) findViewById(R.id.TextView04); 

     // Get the location manager 
     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     // Define the criteria how to select the locatioin provider -> use 
     // default 
     Criteria criteria = new Criteria(); 
     provider = locationManager.getBestProvider(criteria, false); 
     Location location = locationManager.getLastKnownLocation(provider); 
     location.setAccuracy(1); 

     // Initialize the location fields 
     if (location != null) { 
      System.out.println("Provider " + provider + " has been selected."); 
      onLocationChanged(location); 
     } else { 
      latituteField.setText("Location not available"); 
      longitudeField.setText("Location not available"); 
     } 
    } 

    /* Request updates at startup */ 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     locationManager.requestLocationUpdates(provider, 1, 1, this); 
    } 

    /* Remove the locationlistener updates when Activity is paused */ 
    @Override 
    protected void onPause() { 
     super.onPause(); 
     locationManager.removeUpdates(this); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     double lat = (double) (location.getLatitude()); 
     double lng = (double) (location.getLongitude()); 
     latituteField.setText(String.valueOf(lat)); 
     longitudeField.setText(String.valueOf(lng)); 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     Toast.makeText(this, "Enabled new provider " + provider, 
       Toast.LENGTH_SHORT).show(); 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     Toast.makeText(this, "Disabled provider " + provider, 
       Toast.LENGTH_SHORT).show(); 
    } 
} 

ответ

1

Я пробовал коды на основе сети и ВОП провайдера, чтобы получить идеальное место, где устройство

В общем, это не представляется возможным «, чтобы получить идеальное место, где устройство ", любым способом. Существует много переменных, связанных с получением местоположения, и не все эти переменные будут в вашу пользу в любое время.

Можем ли мы на самом деле это так или иначе соответствовать

Насколько нам известно, Google Maps использует Play Services SDK, fused location provider.