使用JavaScript获取GPS位置

3

我正在使用平板电脑,开发html应用程序,希望在不使用任何网络连接的情况下获取gps位置信息。请为我提供简单的建议。

4个回答

6
使用JS可以像这样获取它:
 <script>
   var x = document.getElementById("demo");
    function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude +  "<br>Longitude: " + position.coords.longitude;
}
</script>

你需要设置一些权限...阅读这篇文章:"https://dev59.com/am435IYBdhLWcg3wlRIf" - Panther
亲爱的,我直接制作了一个HTML文件,并在其中添加了这个JavaScript部分,那么我应该在哪里添加这些权限? - Teerath Kumar

0
你需要创建一个 LocationManager 类的实例。然后,你可以使用 getLastKnownLocation 方法来查找位置。你必须将 Location.GPS_PROVIDER 作为参数传递进去。
LocationManager locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
Location userLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Log.d("Latitude", userLocation.getLatitude());
Log.d("Longitude", userLocation.getLongitude());

亲爱的,我正在使用php、sqlite和yii框架进行开发,在本地主机上运行应用程序,但是网络连接不可用,唯一的选择是平板电脑内部的GPS,并且我需要获取经纬度。请告诉我根据我的编程环境应该怎么做。 - Teerath Kumar

0

给予权限:

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

获取经纬度:

LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();

保存为txt文件:

public void generateLatLongOnSDCard(String sFileName, String sBody){
    try
    {
        File rootDirFile = new File(Environment.getExternalStorageDirectory(), "LatLong");
        if (!rootDirFile.exists()) {
            rootDirFile.mkdirs();
        }
        File gpxfile = new File(rootDirFile, sFileName);
        FileWriter writer = new FileWriter(gpxfile);
        writer.append(sBody);
        writer.flush();
        writer.close();
        Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
    }
    catch(IOException e)
    {
         e.printStackTrace();
    }
   }

最后你可以读取文本文件。


亲爱的,我正在使用php、sqlite和yii框架进行开发,在本地主机上运行应用程序,但是网络连接不可用,唯一的选择是平板电脑内部的GPS,并且我需要获取经纬度。请告诉我根据我的编程环境应该怎么做。 - Teerath Kumar

0

如果您想获得更准确的位置信息,应该请求更新,仅使用上次已知位置是不够的。GPS_PROVIDER 只会提供来自 GPS 的位置更新,而不是网络提供商。然而,如果您使用 NETWORK_PROVIDER,则可以在室内获取更准确的位置值。

public class MainActivity extends Activity implements LocationListener{

    protected LocationManager locationManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    }

    @Override
    public void onLocationChanged(Location location) {
        txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude());
    }

    @Override
    public void onProviderDisabled(String provider) {
        Log.d("Latitude","disable");
    }

    @Override
    public void onProviderEnabled(String provider) {
        Log.d("Latitude","enable");
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        Log.d("Latitude","status");
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接