本文来自:fair-jm.iteye.com 转截请注明出处
官网的教程是在Activity下 在Fragment下在高德论坛找到一些方法 试了下可以显示 但是切换后总会有些问题
比如切换后就是新的了 切换后地图就不显示了
我这种方式可以在切换后保持地图状态 但是得限定屏幕为水平或者竖直 如果翻转的话也会报错
布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.amap.api.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" > </com.amap.api.maps.MapView> </RelativeLayout>
代码:
package com.cc.android.map.fragment; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.amap.api.maps.AMap; import com.amap.api.maps.MapView; import com.cc.android.map.MainActivity; import com.cc.android.map.R; import com.cc.android.map.constant.Constants; public class MapFragment extends Fragment { private static MapFragment fragment=null; public static final int POSITION=0; private MapView mapView; private AMap aMap; private View mapLayout; public static Fragment newInstance(){ if(fragment==null){ synchronized(MapFragment.class){ if(fragment==null){ fragment=new MapFragment(); } } } return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (mapLayout == null) { Log.i("sys", "MF onCreateView() null"); mapLayout = inflater.inflate(R.layout.map, null); mapView = (MapView) mapLayout.findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); if (aMap == null) { aMap = mapView.getMap(); } }else { if (mapLayout.getParent() != null) { ((ViewGroup) mapLayout.getParent()).removeView(mapLayout); } } return mapLayout; } @Override public void onAttach(Activity activity) { super.onAttach(activity); ((MainActivity) activity).onSectionAttached(Constants.MAP_FRAGMENT); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onResume() { Log.i("sys", "mf onResume"); super.onResume(); mapView.onResume(); } /** * 方法必须重写 * map的生命周期方法 */ @Override public void onPause() { Log.i("sys", "mf onPause"); super.onPause(); mapView.onPause(); } /** * 方法必须重写 * map的生命周期方法 */ @Override public void onSaveInstanceState(Bundle outState) { Log.i("sys", "mf onSaveInstanceState"); super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必须重写 * map的生命周期方法 */ @Override public void onDestroy() { Log.i("sys", "mf onDestroy"); super.onDestroy(); mapView.onDestroy(); } }
这样可以保证在切换fragment的时候 地图不会不显示或者还原
注意要在清单中注明app的方向 不能让屏幕翻转
在Activity标签中写:
android:screenOrientation="portrait"
以上的代码出了点问题 就是不要返回一个单例 不然关掉再打开不会加载地图 改正:
public static Fragment getNewInstance(Context context) { MapFragment fragment = null; fragment = new MapFragment(); fragment.context=context; //context变为域 fragment.locationSource = new MyLocationSource(context); return fragment; }
不知道大家有什么方法 让高德地图显示在fragment中 在切换后依然保留原来的状态 翻转屏也不会有异常 欢迎讨论
相关推荐
本主题将深入探讨如何在Fragment中封装高德地图的使用,以及如何实现定位和弹窗功能。 首先,我们要了解`Fragment`。在Android应用中,Fragment是一种可以包含UI组件的模块化单元,它可以在Activity之间共享,也...
在Android应用开发中,集成高德地图是一项常见的需求,它能为用户提供丰富的地图服务,如定位、导航、路线规划等。本Demo项目“Android集成高德地图Demo”旨在展示如何在Android应用程序中有效地整合高德地图SDK,为...
在IT行业中,尤其是在移动应用开发领域,高德地图是一款广泛使用的地图服务,它提供了丰富的功能,包括实时导航和路径轨迹显示。这篇文档将深入探讨这些关键知识点,以便开发者理解和实现类似的功能。 首先,我们来...
在Android应用开发中,集成高德地图以实现定位和地图显示功能是一项常见的需求。本教程将详细介绍如何在Android项目中实现这一功能,主要分为以下几个步骤: 1. **添加依赖库** 在`build.gradle`(Module: app)...
"高德地图定位缩放比例尺添加marker的Demo"是一个很好的示例,它展示了如何在Android应用中集成高德地图,并实现一些核心功能,如用户定位、比例尺显示、Marker的添加以及自定义Marker和缩放操作。下面我们将详细...
在Android应用中,我们通常会创建一个地图fragment或activity来显示地图,并通过高德地图SDK的`MapFragment`或`MapView`类来初始化地图。在`AreaActivity.java`中,开发者可能已经实现了初始化地图、设置地图层级、...
2. **地图初始化**:在Activity或Fragment中,我们需要初始化地图控件,设置地图显示的级别、中心点等参数。这通常通过`MapView`类和`Amap`对象来实现。 3. **定位服务**:高德地图API提供了定位服务,可以获取用户...
4. InfoWindow 的使用:InfoWindow 是高德地图API 中的一种基本元素,用于在地图上显示 marker 的信息。 5. 自定义 marker 的信息窗口:可以通过自定义 InfoWindowAdapter 来实现自定义 marker 的信息窗口。 高德...
在这个源代码中,开发者可能使用了高德地图SDK来实现地图的显示、定位用户位置、绘制路线以及导航指引。值得注意的是,Android应用通常需要申请API密钥才能使用高德地图服务,这涉及到安全性和权限管理。 步行、...
1. 创建地图Fragment或MapView:在布局文件中添加MapView,并在代码中初始化它。确保设置地图的Key,这是高德地图服务的唯一标识。 2. 设置地图层级管理器(MapManager)和地图状态监听器(MapStatusUpdateListener...
在Android开发中,集成高德地图API是常见的需求,它能为应用添加地图展示、定位、路线规划等功能。本文将详细介绍如何在Android项目中初始化高德地图Demo,以帮助开发者快速理解和实现相关功能。 首先,我们需要在...
在Android开发中,高德地图是一个广泛使用的地图API,提供了丰富的功能,如定位、路径规划、地图绘制等。本文将详细讲解如何实现自定义点聚合Marker图片以及Overlay的点击选中功能。 首先,我们需要理解“点聚合”...
本教程将详细讲解如何在Android应用中读取和解析KML文件,并将其内容显示在高德地图上。 首先,我们需要在项目中引入高德地图SDK。在build.gradle文件中添加高德地图的依赖库,例如: ```groovy dependencies { ...
在源码中,开发者会看到如何在Android应用中初始化高德地图SDK,如何加载地图,以及如何处理地图的触摸事件和更新地图显示。 地图图层效果是高德地图API中的一个重要部分。图层可以理解为地图上的不同视觉元素集合...
高德地图作为国内领先的地图服务提供商,提供了强大的API和SDK,使得开发者能够轻松地在自己的应用中实现地图展示和导航功能,而无需让用户跳转到其他应用。下面我们将详细探讨如何在Android应用中集成高德地图的...
在Android应用中集成高德地图,首先需要在项目中引入高德地图的SDK。这通常通过在`build.gradle`文件中添加依赖项来完成,然后同步项目以下载库。同时,还需要在应用的AndroidManifest.xml文件中申请相应的权限,如...
在这个Demo中,开发者对高德地图API进行了简单的修改,以适应`ViewPager`和`Fragment`的架构。`ViewPager`是一个强大的组件,它允许用户左右滑动来切换不同的页面,而`Fragment`则可以看作是应用程序界面的一部分,...
高德地图API的Java类通常会被导入到项目的Activity或Fragment中,比如`AMap`、`MapView`、`Marker`等类,它们分别代表地图对象、地图视图和地图上的标注。通过这些类,开发者可以实现地图的初始化、显示、缩放、平移...
在Android开发中,集成地图功能是一项常见的需求,而高德地图API则是许多开发者首选的解决方案。本资源"Android源码高德地图图层效果_地图定位.zip"显然提供了关于如何在Android应用中实现高德地图的图层效果和定位...
在移动应用开发中,集成高德地图API是一个常见的需求,特别是在需要实现定位、搜索和导航功能的应用中。本文将详细讲解如何在您的项目中集成高德地图,利用其API实现定位功能、关键字检索POI(Point of Interest)...