2013-07-17 93 views
0

我搞错了LocationClientGoogle Maps V2的组合,因为我想将它集成到我的应用程序和outdate the LocationListener, LocationSource combination在将LocationClient提供给Maps之前获取Location的位置?

一个我工作的应用程序的requirement是从LocationListener的,modify提供grab the Location是通过LocationSource位置and pass it to Maps

这是工作,但我不知道如何使用LocationClient管理这个。因为它似乎会自动提供地图到地图,并且在我可以对其进行修改之前没有必要抓取地点。

我错过了什么或者是这样的事实吗?

回答

2

LocationClient的工作方式类似于原生Android位置API,它接受一个LocationListener的作为参数传递给聆听位置​​更新: http://developer.android.com/reference/com/google/android/gms/location/LocationClient.html

LocationListener.onLocationChanged(Location location)方法,然后获取与新的位置的平台调用。

因此,您可以使用相同的策略将位置更新通过LocationSourceLocationSource.OnLocationChangedListener传递到Maps API v2,以控制地图上显示的位置。

首先,在你Activity声明OnLocationChangedListener对象:

private OnLocationChangedListener mListener; //Used to update the map with new location 

然后,实施LocationSource为您的活动,这样的:

public class MapScreen extends FragmentActivity implements LocationSource{

onCreate(),为此成立了LocationSource当您设置地图对象时:Activity

... 
//Show the location on the map 
mMap.setMyLocationEnabled(true); 
//Set location source 
mMap.setLocationSource(this); 
... 

然后,添加对LocationSource接口所​​需的方法:LocationSource

/** 
* Maps V2 Location updates 
*/ 
@Override 
public void activate(OnLocationChangedListener listener) { 
    mListener = listener;  
} 

/** 
* Maps V2 Location updates 
*/ 
@Override 
public void deactivate() { 
    mListener = null;  
} 

的最后一部分是在位置更新通过从正常LocationListenerActivity实现:

//Update real-time location on map 
if(mListener != null){ 
    mListener.onLocationChanged(location); 
} 
+0

其实您可以几乎一个接一个地用LocationClient替换LocationManager。我很容易被使用这个困惑...... –

相关问题