【问题标题】:Unable to add marker on map in Android无法在 Android 的地图上添加标记
【发布时间】:2016-05-10 22:45:55
【问题描述】:

我在启动 mapActivity 时遇到了这个异常。

GooglePlayServicesUtil:Google Play 服务已过期。需要 8298000 但找到 6599036

并且应用程序在以下行崩溃。

final Marker marker = mMap.addMarker(new MarkerOptions().position(location);

注意:应用程序在 4.3 和 5.0.1 版本上运行良好,但在 4.4.2 中遇到此问题。有什么解决办法吗?

谢谢

【问题讨论】:

  • MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("My Maps "); // adding marker mMap.addMarker(marker);
  • 你使用的是哪个版本compile 'com.google.android.gms:play-services-wearable:7.8.0'??
  • 您的播放服务已过时更新它
  • 我正在使用这个:编译 'com.google.android.gms:play-services:8.3.0'
  • @UsmanIshrat 你解决了吗?

标签: android google-maps-markers android-gps


【解决方案1】:

Google Play 服务已过期。需要 8298000 但找到 6599036

更新 Tools > Android > SDK Manager 中的软件包,然后检查 Extras 中所有有可用更新的软件包。

请使用更新版本

dependencies {
        compile 'com.google.android.gms:play-services:8.4.0'
        // or compile 'com.google.android.gms:play-services-wearable:7.8.0'
    }

【讨论】:

  • ## 添加依赖的步骤## 它将自动获取最新版本 1. 转到 文件菜单 > 项目结构 2. 从左侧面板中选择应用程序 3. 选择 Dependencies 选项卡 4. 点击 + 符号按钮 5. 选择 Library Dependency 6. 选择 google play service(您可以添加其他服务(如果需要) 7. 好的
  • 要使用项目配置解决此问题,OP 实际上需要转向另一个方向并使用 Google Play 服务 6.5 或更早版本编译他们的应用程序。见这里:stackoverflow.com/questions/19721415/…
【解决方案2】:

这是一个运行时错误,当设备没有与您的应用程序编译时使用的至少相同版本的 Google Play 服务时发生。

如果用户没有您的应用所需的最低版本,您的应用中应该有代码提示用户升级 Google Play 服务。 旧的、现已弃用的方法是使用 GooglePlayServicesUtil:

status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (status != ConnectionResult.SUCCESS) {
    if (GooglePlayServicesUtil.isUserRecoverableError(status)) {
        GooglePlayServicesUtil.getErrorDialog(status, this,
                100).show();
    } 
}

新的方式是使用新的GoogleApiAvailability类,代码来自this answer

private boolean checkPlayServices() {
    GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
    int result = googleAPI.isGooglePlayServicesAvailable(this);
    if(result != ConnectionResult.SUCCESS) {
        if(googleAPI.isUserResolvableError(result)) {
            googleAPI.getErrorDialog(this, result,
                    PLAY_SERVICES_RESOLUTION_REQUEST).show();
        }

        return false;
    }

    return true;
}

【讨论】:

  • 非常感谢。第一个选项对我有帮助,我希望第二个选项也不错,你能告诉我 PLAY_SERVICES_RESOLUTION_REQUEST 的值应该是多少? (我应该使用我的选择吗?)
  • 啊,是的,这只是一个 int 常量,由您选择。您也可以像第一个示例一样使用 100。
猜你喜欢
  • 2014-09-22
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多