1

一切似乎都运行良好。它可以找到我的位置,但不会调用 onLocationChanged() 方法并为我创建标记。有任何想法吗?

public class MainActivity extends FragmentActivity implements LocationListener
{
Context context = this;
GoogleMap googlemap;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initMap();

    LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
    String provider = lm.getBestProvider(new Criteria(), true);
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 0, this);
}

public void onLocationChanged(Location location) {
    LatLng current = new LatLng(location.getLatitude(), location.getLatitude());
    Date date = new Date();

    googlemap.addMarker(new MarkerOptions()
            .title("Current Pos")
            .snippet(new Timestamp(date.getTime()).toString())
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
            .position(current)
            );
}

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

public void onProviderEnabled(String provider) {
}

private void initMap(){
    SupportMapFragment mf = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    googlemap = mf.getMap();

    googlemap.setMyLocationEnabled(true);
    googlemap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
}
4

3 回答 3

2

您的 Activity 需要实现 LocationSource 接口,并且您需要注册 GoogleMap 以使用 MainActivity 类作为其位置源:

将您的类声明更改为:

public class MainActivity extends FragmentActivity implements LocationListener, LocationSource

并设置 GoogleMap 的 LocationSource

//This is how you register the LocationSource for the map
googleMap.setLocationSource(this);

有关更多完整示例,请参见此答案

于 2013-02-16T00:14:27.337 回答
0

你有打开wifi吗?一切似乎都定义明确。

于 2013-02-15T01:35:24.010 回答
0

也许您的 wifi 信号很弱并且您遇到了连接问题?尝试通过 GPS 提供商获取位置更新:

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, this);

事实上,我总是将两者都包含在内,以便用户可以从任一提供商处获取他的位置。此外,请尝试在 onLocationChanged 回调中包含一条日志语句。如果事实证明实际上正在调用该方法,那么您就知道您的问题在于添加标记,而不是您的位置检索。

于 2013-02-15T02:07:13.140 回答