【问题标题】:How to get my phone's current location using Google Maps Api in Android?如何在 Android 中使用 Google Maps Api 获取手机的当前位置?
【发布时间】:2014-03-12 12:47:04
【问题描述】:

我想使用 Google map 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));

  }  }

【问题讨论】:

  • 在 manifest.xml 中添加了所需的权限
  • 我已将所有权限添加到清单中。

标签: android location maps


【解决方案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));
}

【讨论】:

    【解决方案2】:

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

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

    试试吧,它会起作用的。

    【讨论】:

    • =在你的情况下是“地图”。
    • 我无法在地图上使用这些方法
    【解决方案3】:

    您已经通过以下方式获取位置: location.getLatitude(), location.getLongitude()

    【讨论】:

      【解决方案4】:

      打开你的手机GPS,当它停止闪烁时,表示它已经得到了位置,然后标记会显示出来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-30
        • 2012-11-30
        • 1970-01-01
        • 1970-01-01
        • 2013-06-08
        • 1970-01-01
        相关资源
        最近更新 更多