标签: android-maps

Google Play服务 - SupportMapFragment.getMap()始终返回null

可能重复:
使用SupportMapFragment时,如何知道地图已准备好使用?

我目前正在测试新的Maps API V2,但我真的无法让它正常工作.

我的问题是getMap()总是返回null.

我已经在3个不同的点测试了这个电话:

  1. 的onCreate()
  2. 的onResume()
  3. 在地图已在屏幕上可见的几秒后调用的处理程序中

这是代码:

public class MapActivity extends FragmentActivity {

private SupportMapFragment mMapFragment;

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
            setupMap();
}

@Override
protected void onResume() {
    super.onResume();
    setupMap();
    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            setupMap();
        }
    }, 5000);
}

private void setupMap() {
    if (getSupportFragmentManager().findFragmentById(R.id.fragment) == null) {
    mMapFragment = CustomMapFragment.newInstance();
        getSupportFragmentManager().beginTransaction()
                .add(R.id.map_wrapper, mMapFragment).commit();
    }
    GoogleMap map = mMapFragment.getMap();
    if (map != null) {
        mMapFragment.getMap().getUiSettings().setZoomControlsEnabled(true);
        mMapFragment.getMap().getUiSettings().setZoomGesturesEnabled(true);
        mMapFragment.getMap().setMyLocationEnabled(true);
    }
} …
Run Code Online (Sandbox Code Playgroud)

android android-maps google-play-services

17
推荐指数
1
解决办法
2万
查看次数

在片段中使用Google Map v2的推荐方法是什么?

我想在片段内添加自定义布局的地图.

  1. 我可以使用将添加SupportMapFragment的ChildFragmentManager来实现.这种方法目前正在使用.但它有缺点,因为子片段事务是异步的,很难保证getMap不会返回null.
  2. 另一种方法是从super扩展SupportMapFragment存储mapView onCreateView

    mapView = super.onCreateView(inflater, container, savedInstanceState);

    并将其插入到膨胀的布局中.主要问题是,然后片段尝试从保存状态恢复谷歌地图SDK内部粉碎.

有没有其他方法可以解决这个问题.如果谷歌地图团队的某个人会推荐正确的方法会很好,因为你没有在样本中加入这样的东西.

android android-maps android-mapview android-maps-v2

17
推荐指数
1
解决办法
4954
查看次数

Google会在标记附近映射api v2缩放

我在android中使用Google maps api v2.我已经使用纬度和经度放置了一个标记.标记显示在正确的位置,但我希望地图应该只显示标记周围的区域.我想在显示地图时缩放到标记位置,这样它只显示标记的附近区域..任何帮助都将是大.

android android-maps

17
推荐指数
2
解决办法
3万
查看次数

处理多个地理围栏过渡与公共区域

如果我有这两个地理围栏,在注册这些地理围栏之后,当我进入或退出这些圈子的圆周时,我会得到通知.但是,如果我正在通过公共区域,即从一圈到另一圈,我不希望我的应用程序发送通知.

可能吗?如果是这样,那怎么样?

地图的图象与相交的两个圈子的

gps android android-maps geofencing android-geofence

17
推荐指数
1
解决办法
4674
查看次数

在Android中保存MapFragment(Maps v2)状态

我正在使用新的GoogleMaps API(v2)并且片段存在一些问题.我的应用程序(Map,List)中有两个片段,用户可以在它们之间切换.到目前为止使用此代码正常工作:

if (itemPosition == 0) {
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragmentpos, myMapFragment).commit();
    } else if (itemPosition == 1) {
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragmentpos, myListFragment).commit();
}......
Run Code Online (Sandbox Code Playgroud)

当我使用地图时,切换到列表片段,然后返回到地图片段,不保存地图的最后位置.这不是我想要的,我希望地图处于保存状态,因为我"离开"它..我怎么能完成这个?我试图保存相机的位置

public void onSaveInstanceState(Bundle outState){
   outState.putDouble("LAT", mMap.getCameraPosition().target.latitude);
   outState.putDouble("LON", mMap.getCameraPosition().target.longitude);
   outState.putFloat("BEAR", mMap.getCameraPosition().bearing);
   ...
Run Code Online (Sandbox Code Playgroud)

}

并在onCreateView()中恢复它,但Bundle始终为null.如果我替换片段,则不会调用onSaveInstanceState.

那么如何保存地图的状态呢?

android android-maps android-fragments android-fragmentactivity

16
推荐指数
1
解决办法
1万
查看次数

谷歌地图在Android上工作正常但我仍然收到错误"无法找到类'maps.i.k',从方法maps.z.ag.a引用"

我通过下载库,将其添加到工作区,然后将其作为库引用,使Google Maps Android API v2在我的Android应用程序上完美运行.

但是一旦包含Map Fragment的活动开始,我仍然会收到此错误

Could not find class 'maps.i.k', referenced from method maps.z.ag.a
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我正在使用支持地图片段

这个错误似乎不会影响我,也不会崩溃应用程序或任何东西,我是否应该费心修复它?

添加了清单 PS E_SelectJourney是我显示和使用地图的地方

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.HelloMap.AndroidApp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <permission
        android:name="com.HelloMap.AndroidApp.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.HelloMap.AndroidApp.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <application
        android:allowBackup="true"
        android:configChanges="orientation"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.Sherlock" >
        <uses-library
            android:name="com.google.android.maps"
            android:required="true" />

        <activity
            android:name="com.HelloMap.AndroidApp.A_SplashScreen" …
Run Code Online (Sandbox Code Playgroud)

android android-maps android-library google-maps-mobile android-debug

15
推荐指数
2
解决办法
4824
查看次数

子类化SupportMapFragment会导致NullPointerException

我目前正在SupportMapFragment使用google-play-services库r3 实现我自己的子类.

我得到一个NullPointerException在图书馆的内部类中的一个,当我尝试我的片段添加到ActivityViewPager.这是相关的堆栈跟踪:

java.lang.NullPointerException
    at maps.y.p.onResume(Unknown Source)
    at com.google.android.gms.maps.internal.IMapFragmentDelegate$Stub.onTransact(IMapFragmentDelegate.java:115)
    at android.os.Binder.transact(Binder.java:310)
    at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onResume(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment$a.onResume(Unknown Source)
    at com.google.android.gms.internal.c$1.a(Unknown Source)
    at com.google.android.gms.internal.c.a(Unknown Source)
    at com.google.android.gms.internal.c.onResume(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment.onResume(Unknown Source)
    at android.support.v4.app.Fragment.performResume(Fragment.java:1503)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
    at android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(FragmentManager.java:807)
    at android.support.v4.app.FragmentManagerImpl.startPendingDeferredFragments(FragmentManager.java:1112)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1461)
    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
Run Code Online (Sandbox Code Playgroud)

显然,此时内部地图为空.

有没有人遇到过这个问题而且有解决方案?

android android-maps google-play-services

14
推荐指数
1
解决办法
6216
查看次数

Map API v2授权失败

好吧,这是我用这个例子做的

  1. 通过keytool获得调试密钥(确保调试密钥在首选项 - > Android - > Build中由eclipse使用)
  2. 通过命令生成密钥

    $ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android

  3. 复制粘贴在Google API控制台+我的包名称中的SHA1总和:

    总和; com.my.package

  4. 在Google API控制台的同一项目中启用了Google Map API v2

  5. 将其复制到元数据中的Manifest应用程序.

  6. 通过SDK管理器下载并导入google-play-services_lib项目并将其作为库项目引用.以及ActionBarSherlock.

  7. 在启动之前,我确保GooglePlayServices可用.

表现:

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>

<permission
    android:name="com.my.package.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>

<uses-permission android:name="com.my.package.permission.MAPS_RECEIVE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)

应用:

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="debug_key"/>
Run Code Online (Sandbox Code Playgroud)

还添加了proguard的东西,但我现在没有混淆.

DrugstoresMapActivity扩展了SherlockFragmentActivity

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment
        android:id="@+id/map_fragment"
        class="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

project.properties

target=android-17
android.library.reference.1=../google-play-services_lib
android.library.reference.2=../ActionBarSherlock
Run Code Online (Sandbox Code Playgroud)

ActionBarSherlock在libs中有android-support-v4,如果重要的话,不是主项目.

StartupActivity确保只有可用的服务才会启动DrugstoresMapActivity

private void attempt() { …
Run Code Online (Sandbox Code Playgroud)

android google-maps-api-2 android-maps

14
推荐指数
1
解决办法
7670
查看次数

Google Maps Android API v2在中国 - 地图加载大约需要一个小时

我有什么:使用Android Maps API v2(本机库)的原生Android应用程序

香港和乌克兰的一切都很好.一旦我们踏入中国边境,问题就出现了.我们有下一个问题:

我对中国的了解:

  • 谷歌在那里并不友好,但我们的应用程序不是在中国使用谷歌地图的应用程序,所以我的问题可能不是一个新的.
  • 可以选择使用在中国本地托管的谷歌地图 - ditu.google.cn,但是一旦我们使用原生应用程序,现在就没有选择使用地图的Web视图而不是本机实现(我们有很多自定义)
  • 我知道,最好不要在谷歌地图上使用HTTPS(你可以在这里阅读:中国的Google Maps Geolocation API)

问题是:

  • 我们能以某种方式改善地图的负荷吗?我们可以以某种方式覆盖谷歌地图来源以使用ditu.google.cn吗?
  • 我们可以在Map API中以某种方式禁用HTTPS吗?
  • 围绕此问题的任何其他解决方案,可以基于谷歌服务应用.也许有一些无证的功能?

什么是没有想到的答案是"使用百度".我知道百度,这是一个veeryyy备份选项,只要他们有一个api docs in chineese.

需要补充的是,基于ditu.google.cn的Geocoding API运行良好.

期待,谢谢!

android google-maps android-maps google-maps-android-api-2 android-maps-v2

14
推荐指数
1
解决办法
2520
查看次数

Google地图正在显示空白地图

我目前仍然遇到这个问题:谷歌地图似乎根本没有加载.请看下面的图片: 在此输入图像描述

这真让我疯狂.我已经做了以下事情:

  1. 将我的包名+ SHA1(调试密钥库)+ SHA1(发布密钥库)添加到Google Developer的控制台.
  2. 启用了Maps SDK for Android.API密钥具有Android应用限制
  3. 从Firebase控制台添加了google-services.json到我的应用
  4. 添加必要的权限:
  5. 添加了Manifest文件的API密钥 - 来自Google Developer Console
  6. 添加了gms版本的元数据

这是我片段的代码:

import android.content.Context;
import android.content.pm.FeatureInfo;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.ErrorDialogFragment;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends Fragment implements OnMapReadyCallback {

    private MapFragment mapFragment; …
Run Code Online (Sandbox Code Playgroud)

android google-maps android-maps

14
推荐指数
5
解决办法
2055
查看次数