首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MapFragment不会自动绘制

MapFragment不会自动绘制
EN

Stack Overflow用户
提问于 2015-09-25 03:09:04
回答 1查看 60关注 0票数 1

我一直在制作一个实现FrameLayout的映射,我以编程方式将MapFragment附加到该映射上(我使用FragmentManager添加片段)。下面是我的onCreate方法(忽略广告内容,我只是在测试东西):

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    AdView av = (AdView) findViewById(R.id.top_banner_ad_MM); // Set the banner ad view
    AdRequest ar = new AdRequest.Builder()
            .addTestDevice("106E258A55DADC2A54C47969C87A91AC")
            .build();
    av.loadAd(ar);
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

// Make the new map fragment (MapFragment = google's class)
MapFragment mf = MapFragment.newInstance();
ft.add(R.id.mapview_frame, mf, "map");
ft.commit();

mf.getMapAsync(new OnMapReadyCallback()
{
    @Override
    public void onMapReady(GoogleMap googleMap)
    {

        gMap = googleMap; // Use the googleMap reference in this class

        MapFragment mf = (MapFragment) getFragmentManager().findFragmentByTag("map");
        ViewGroup.LayoutParams lp = mf.getView().getLayoutParams();
        lp.height = (findViewById(R.id.mapview_frame)).getHeight();
        lp.width = (findViewById(R.id.mapview_frame)).getWidth();
        mf.getView().setLayoutParams(lp);

        // Set camera position to Ein Gedi 3, Holon
        CameraPosition cp = new CameraPosition.Builder()
                .target(addr)
                .zoom(9) // Set zoom level to be able to see Tel Aviv
                .bearing(0) // Set bearing to North
                .build(); // Build
        gMap.animateCamera(CameraUpdateFactory.newCameraPosition(cp)); // Apply position

        getFragmentManager().findFragmentByTag("map").getView().invalidate();
        Log.w("GETEVENT-MAPINIT", "I just finished the fucking map initialization");
    }
});

代码正常工作,应用程序启动(Maps API auth工作正常,没有错误),但地图没有绘制!只有当我将设备倾斜90度以调用设备配置中的更改时,地图才会自动绘制并开始为相机设置动画(screenshot)。您可以看到,我调用了invalidate(),试图强制片段自动绘制,但它也无法工作(如果没有invalidate()调用,它也无法工作)。

为什么地图不能自己画呢?

EN

回答 1

Stack Overflow用户

发布于 2015-09-25 03:24:21

检查google api密钥,日志中可能有警告。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32769082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档