Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 仅当GoogleAppClient成功连接时生成映射?_Android_Google Maps_Geolocation_Google Maps Markers_Google Maps Android Api 2 - Fatal编程技术网

Android 仅当GoogleAppClient成功连接时生成映射?

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客户端时构建地图。在我的研究案例中这样做正确吗?在我的例子中,重要的是在地图上显示一些标记的位置,并且只有在可能的情况下才能显示当前用户的位置? 在我看来,我应该以相反的方式进行:在构

我正在开发一个用于锻炼的Android应用程序,以便更好地理解谷歌地图api。在这个应用程序中,我想显示一些标记,如果Android知道用户的当前位置,我想在地图上显示它。按照谷歌教程,我会这样做。但我对获取地图和建立GoogleAPI客户端连接的更好方法表示怀疑。在本教程中,开发人员仅在成功连接GoogleAPI客户端时构建地图。在我的研究案例中这样做正确吗?在我的例子中,重要的是在地图上显示一些标记的位置,并且只有在可能的情况下才能显示当前用户的位置? 在我看来,我应该以相反的方式进行:在构建映射之前,只有在映射就绪时,回调才能建立GoogleAppClient连接。我认为Api客户端连接只需要获得正确的当前位置

在本教程中,它们是这样做的:

@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客户端不是总是必需的吗?