如何在Android中使用Google Maps Api获取手机的当前位置?

时间:2014-03-12 12:47:04

标签: android location maps

我想使用Google地图Api在我当前的位置上添加标记。我在Android手机上测试了它,我只得到一张地图。我目前的位置没有标记。即使是我在代码中放入的吐司也没有显示出来。谁能帮我这个。 我在下面发布我的代码:

public class MainActivity extends Activity implements LocationListener {
GoogleMap map;

@Override
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
}

 @Override
   public void onLocationChanged(Location location) {

 map.clear();

MarkerOptions mp = new MarkerOptions();

  mp.position(new LatLng(location.getLatitude(), location.getLongitude()));

  mp.title("my position");

   map.addMarker(mp);
   Toast.makeText(getApplicationContext(),
       location.getLatitude() +", "+location.getLongitude(),
       Toast.LENGTH_LONG).show();

  map.animateCamera(CameraUpdateFactory.newLatLngZoom(
   new LatLng(location.getLatitude(), location.getLongitude()), 16));

  }  }

4 个答案:

答案 0 :(得分:1)

只需从代码中删除map.clear();,然后添加marker.remove();

即可

这对我有用..试试这个,

protected void onCreate(Bundle savedInstanceState) 
            {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                //actionBar.getActionBar();



                locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                System.out.println("current "+locationManager);

                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 1, this);
                location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

                addGoogleMap();
                addMarkers();

            }

            @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") 
            private void addGoogleMap() {
                if(googleMap == null){
                googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
                googleMap.setOnMarkerClickListener(this);
                  googleMap.setOnMarkerDragListener(this);
                }

            }


            private void addMarkers() {

                if(googleMap != null)
                {
                lt = new LatLng(location.getLatitude(), location.getLongitude());


                marker = googleMap.addMarker(new MarkerOptions().position(lt)
                          .title("Current location ").snippet("Race Start: 9:00 AM CST")
                          .draggable(false));

                googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                          lt, 20));
                }

            }

@Override
            public void onLocationChanged(Location location) {
            //txtLat = (TextView) findViewById(R.id.textview1);
            //txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude());
                System.out.println("loc changed");
                //googleMap.clear();
                marker.remove();
                locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                System.out.println("current "+locationManager);

                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 1, this);
                location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                lt = new LatLng(location.getLatitude(), location.getLongitude());
                marker = googleMap.addMarker(new MarkerOptions().position(lt)
                          .title("Current location ").snippet("Race Start: 9:00 AM CST")
                          .draggable(false));
}

答案 1 :(得分:0)

Google Map提供了一种内置方法,如果您想使用谷歌地图获取位置。

map.getLatitude();
map.getLongitude();

尝试一下,它会起作用。

答案 2 :(得分:0)

您已经获得了这个位置: location.getLatitude(), location.getLongitude()

答案 3 :(得分:0)

打开手机GPS,当它停止闪烁时,表示已获得该位置,然后将显示标记。