Android 仅当GoogleAppClient成功连接时生成映射?
我正在开发一个用于锻炼的Android应用程序,以便更好地理解谷歌地图api。在这个应用程序中,我想显示一些标记,如果Android知道用户的当前位置,我想在地图上显示它。按照谷歌教程,我会这样做。但我对获取地图和建立GoogleAPI客户端连接的更好方法表示怀疑。在本教程中,开发人员仅在成功连接GoogleAPI客户端时构建地图。在我的研究案例中这样做正确吗?在我的例子中,重要的是在地图上显示一些标记的位置,并且只有在可能的情况下才能显示当前用户的位置? 在我看来,我应该以相反的方式进行:在构建映射之前,只有在映射就绪时,回调才能建立GoogleAppClient连接。我认为Api客户端连接只需要获得正确的当前位置 在本教程中,它们是这样做的:Android 仅当GoogleAppClient成功连接时生成映射?,android,google-maps,geolocation,google-maps-markers,google-maps-android-api-2,Android,Google Maps,Geolocation,Google Maps Markers,Google Maps Android Api 2,我正在开发一个用于锻炼的Android应用程序,以便更好地理解谷歌地图api。在这个应用程序中,我想显示一些标记,如果Android知道用户的当前位置,我想在地图上显示它。按照谷歌教程,我会这样做。但我对获取地图和建立GoogleAPI客户端连接的更好方法表示怀疑。在本教程中,开发人员仅在成功连接GoogleAPI客户端时构建地图。在我的研究案例中这样做正确吗?在我的例子中,重要的是在地图上显示一些标记的位置,并且只有在可能的情况下才能显示当前用户的位置? 在我看来,我应该以相反的方式进行:在构
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.....
buildGoogleApiClient();
mGoogleApiClient.connect();
....
}
/**
* Builds a GoogleApiClient.
* Uses the addApi() method to request the Google Places API and the Fused Location Provider.
*/
private synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */,
this /* OnConnectionFailedListener */)
.addConnectionCallbacks(this)
.addApi(LocationServices.API)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.build();
createLocationRequest();
}
@Override
public void onConnected(Bundle connectionHint) {
getDeviceLocation();
// Build the map.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
*/
@Override
public void onMapReady(GoogleMap map) {
.... do stuff....}
我会按照以下方式做:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.....
buildGoogleApiClient();
// Build the map.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
/**
* Builds a GoogleApiClient.
* Uses the addApi() method to request the Google Places API and the Fused Location Provider.
*/
private synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */,
this /* OnConnectionFailedListener */)
.addConnectionCallbacks(this)
.addApi(LocationServices.API)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.build();
createLocationRequest();
}
@Override
public void onConnected(Bundle connectionHint) {
getDeviceLocation();
}
*/
@Override
public void onMapReady(GoogleMap map) {
mGoogleApiClient.connect();
----do stuff....
}
只有启用Google Play服务连接,地图才会加载到设备中,如果地图尚未加载,则无法绘制标记。因此,在没有google play服务的情况下无法构建地图。为什么在本教程中,开发人员显示“使用OUD构建地图”会建立google play服务连接,而不会调用mGoogleApiClient.connect?在本教程中,developers.google.com/maps/documentation/android api/…开发人员显示地图并添加标记,而不创建google api客户端连接,它不会对mGoogleApiClient.connect;进行显式调用。我想appi客户端连接只是为了获取位置,还是我想错了?但是我在第一篇文章中编辑了这个问题,现在可能更清楚了:不,你的假设是错误的,它是加载地图本身所必需的。为什么在一些教程中没有GoogleAppClient连接?例如,在此代码中:。api客户端不是总是必需的吗?