GOOGLE MAPS V2 - 获取当前用户排名

时间:2014-04-25 13:27:14

标签: java android

我正在尝试获取用户位置,到目前为止我能够在地图上显示3个商店但是我无法找到我当前的位置,这是通过和模拟器完成的,我已经实现了LocationListener方法但似乎方法(onLocationChaged)永远不会被调用,在OnCreate方法中我已经指定了我的3个商店,它们在地图上显示得很好而不是我的当前位置,我甚至没有那个“raider / round icon”右上角带我到我现在的位置,我不确定我错过了什么。

Java代码:

public class LocateStore extends FragmentActivity implements LocationListener{

static final LatLng ARCADIA = new LatLng(-25.746318, 28.221322999999984);
static final LatLng HATFIELD = new LatLng(-25.7487333, 28.238043199999993);
static final LatLng CENTURION = new LatLng(-25.8602778, 28.189444399999957);
private GoogleMap map;


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

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);


    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

        Marker aracdia = map.addMarker(new MarkerOptions().position(ARCADIA).title("Arcadia").icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_small)));
        Marker hatfield = map.addMarker(new MarkerOptions().position(HATFIELD).title("Hatfield").icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_small)));
        Marker centurion = map.addMarker(new MarkerOptions().position(CENTURION).title("Centurion").icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_small)));
      }

    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub

         map.clear();

         MarkerOptions mp = new MarkerOptions();

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

         mp.title("my position");

         map.addMarker(mp);

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

    }

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

    }

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

    }

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

    }
}

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

尝试以下代码: -

        mapFragment         = (SupportMapFragment) fragmentManager.findFragmentById(R.id.map);
        map                 = mapFragment.getMap();

        map                 . setMyLocationEnabled(true);

答案 2 :(得分:0)

在仿真器上进行测试时(即没有GPS芯片或网络位置),您必须启用模拟位置。在你的清单中有这个:

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

然后,您需要使用DDMS透视图中的模拟器控件视图或通过Telnet发送到模拟器,然后使用geo fix命令发送位置