【问题标题】:Adding a GPS receiver to java code?将 GPS 接收器添加到 java 代码?
【发布时间】:2016-01-30 15:32:04
【问题描述】:

我正在尝试构建一个基于位置的应用程序,并在下面输入了以下代码,但是当我运行该应用程序时,它会将位置移动到我的手机所在的位置,并调出许多位于同一位置的其他 GPS 手机。我需要能够看到我的位置。

import android.content.Context;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import android.location.Location;


import android.widget.Toast;


import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends Activity {

    private GoogleMap map;

    private static final LatLng LONDON =
            new LatLng(+51.50000, -0.11670);

    private LocationManager lm;
    private LocationListener locationListener;

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

        map = ((MapFragment) getFragmentManager()
                .findFragmentById(R.id.map))
                .getMap();
        map.moveCamera(CameraUpdateFactory
                .newLatLngZoom(LONDON, 15));
        map.addMarker(new MarkerOptions().position(LONDON));


        lm = (LocationManager)
                getSystemService(Context.LOCATION_SERVICE);
        locationListener = new MyLocationListener();
    }

    @Override
    protected void onResume() {
        super.onResume();

        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);



    }
    @Override
    protected void onPause() {
        super.onPause();

        lm.removeUpdates(locationListener);

    }

    private class MyLocationListener implements LocationListener {






        @Override

        public void onLocationChanged(Location location){
            if (location!= null){
                Toast.makeText(getBaseContext(),
                        "Location changed:" + location.toString(),
                        Toast.LENGTH_LONG).show();
                LatLng latLng = new

                        LatLng(location.getLatitude(),
                        location.getLongitude());
                map.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,15));

                map.addMarker(new MarkerOptions().position(latLng));
                            }
        }

        @Override
        public void onProviderDisabled(String provider) {
        }

        @Override
        public void onProviderEnabled(String provider){
            // TODO Auto-generated method stub

        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }
    }
}

【问题讨论】:

    标签: java android location maps


    【解决方案1】:

    您无法获取周围其他手机的位置。您只需从手机的 GPS 芯片接收修复信息。

    发生的情况是,在收到的每个位置上,您都添加了一个新标记,但您没有清除之前添加的标记。

    【讨论】:

      【解决方案2】:

      在添加新标记之前,您需要删除旧标记。添加标记时,您可以简单地将其实例化为如下变量:

      Marker marker = map.addMarker(..);
      

      然后像这样删除它:

       marker.remove();
      

      *编辑

      请注意,智能手机中的 GPS 传感器确实不准确,因此从这种传感器接收到的位置会在您的实际位置附近“跳跃”。它可能离您真的很远(数百米),这取决于是否、卫星位置和您的传感器校准。您几乎没有机会以低于 5 米的精度获得位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 2012-04-08
        • 1970-01-01
        • 2020-06-30
        • 2013-05-24
        • 1970-01-01
        相关资源
        最近更新 更多