- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个 Activity 的两个不同 fragment 中使用两个 SupportMapFragment 时遇到奇怪的问题。
实际上,我的问题是在 OneFragment 中添加了 SupprtMapFragment,并在该 map View 中添加了 10 个标记,现在我通过添加另一个 Fragment 转到详细信息页面,并且它现在在这个 Fragment 中也有 SupprtMapFragment 我想清除它并只想显示一个图钉,但它仍然在 map 上显示 11 个标记。
这是我的源代码:
public class MapActivity extends FragmentActivity {
private FragmentManager mFragmrg;
public static String TAG_FRAGMENT_HOME="HomeFragment";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
initView();
}
private void initView(){
mFragmrg=getSupportFragmentManager();
MapHomeFragment mMapHomeFragment=new MapHomeFragment();
FragmentTransaction mFt=mFragmrg.beginTransaction();
mFt.replace(R.id.frame_holder, mMapHomeFragment, TAG_FRAGMENT_HOME).addToBackStack(TAG_FRAGMENT_HOME).commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.map, menu);
return true;
}
}
Activity 的 XMl 布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MapActivity" >
<FrameLayout
android:id="@+id/frame_holder"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
</RelativeLayout>
这个 fragment 有我的第一个 SupportMapFragment,我想在 map 上显示超过 11 个标记,它运行良好。
public class MapHomeFragment extends Fragment implements OnInfoWindowClickListener,OnClickListener{
private GoogleMap mMapView;
private FragmentManager mFragMrg;
private SupportMapFragment mSupportMapFragment;
private LatLng mLatnogGuj=new LatLng(23.0626, 72.5809);
private LatLng mLatnogGujOne=new LatLng(18.9158, 72.8267);
private LatLng mLatnogGujTwo=new LatLng(24.5925, 72.7156);
private LatLng mLatnogGuj3=new LatLng(34.0837,74.7974);
private LatLng mLatnogGuj4=new LatLng(23.2245, 72.6379);
private LatLng mLatnogGuj5=new LatLng(12.9716, 77.5946);
private LatLng mLatnogGuj6=new LatLng(23.0396, 72.5660);
private LatLng mLatnogGuj7=new LatLng(22.3140, 73.1748);
private LatLng mLatnogGuj8=new LatLng(20.5732, 73.7442);
private LatLng mLatnogGuj9=new LatLng(21.1785, 72.8191);
private LatLng mLatnogGuj10=new LatLng(28.6644, 77.2349);
private LatLngBounds.Builder mLatlongBuilder;
private Button mBtnMapDetail;
private ViewSwitcher mViewSwitcher;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View mView=inflater.inflate(R.layout.home_map, container, false);
initView(mView);
return mView;
}
private void initView(View mView){
mViewSwitcher=(ViewSwitcher)mView.findViewById(R.id.viewSwitcher);
mViewSwitcher.showNext();
try{
MapsInitializer.initialize(getActivity());
}catch(Exception Exc){
Exc.printStackTrace();
}
mBtnMapDetail=(Button)mView.findViewById(R.id.btn_mapdetail);
mBtnMapDetail.setOnClickListener(this);
mFragMrg=getFragmentManager();
mSupportMapFragment=(SupportMapFragment) mFragMrg.findFragmentByTag("map_home_fragment");
if(mSupportMapFragment!=null){
mMapView=mSupportMapFragment.getMap();
if(mMapView!=null){
//mMapView.getUiSettings().setAllGesturesEnabled(true);
mMapView.getUiSettings().setMyLocationButtonEnabled(true);
mMapView.getUiSettings().setZoomGesturesEnabled(true);
mMapView.getUiSettings().setZoomControlsEnabled(true);
mMapView.setOnInfoWindowClickListener(this);
mMapView.setInfoWindowAdapter(new CustomInfoViewAdapter(getActivity()));
mLatlongBuilder=new LatLngBounds.Builder();
MarkerOptions mMarkerOption=new MarkerOptions();
mMarkerOption.title("Map One").position(mLatnogGuj).icon(BitmapDescriptorFactory.fromResource(R.drawable.map)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGuj);
mMapView.addMarker(mMarkerOption);
MarkerOptions mMarkerOption1=new MarkerOptions();
mMarkerOption1.title("Map One").position(mLatnogGujOne).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_pub)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGujOne);
mMapView.addMarker(mMarkerOption1);
MarkerOptions mMarkerOption2=new MarkerOptions();
mMarkerOption2.title("Map One").position(mLatnogGujTwo).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_rest)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGujTwo);
mMapView.addMarker(mMarkerOption2);
MarkerOptions mMarkerOption3=new MarkerOptions();
mMarkerOption3.title("Map One").position(mLatnogGuj3).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_small)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGuj3);
mMapView.addMarker(mMarkerOption3);
MarkerOptions mMarkerOption4=new MarkerOptions();
mMarkerOption4.title("Map One").position(mLatnogGuj4).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_take)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGuj4);
mMapView.addMarker(mMarkerOption4);
MarkerOptions mMarkerOption5=new MarkerOptions();
mMarkerOption5.title("Map One").position(mLatnogGuj5).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_top)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGuj5);
mMapView.addMarker(mMarkerOption5);
MarkerOptions mMarkerOption6=new MarkerOptions();
mMarkerOption6.title("Map One").position(mLatnogGuj6).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_top_hover)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGuj6);
mMapView.addMarker(mMarkerOption6);
MarkerOptions mMarkerOption7=new MarkerOptions();
mMarkerOption7.title("Map One").position(mLatnogGuj7).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_pub)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGuj7);
mMapView.addMarker(mMarkerOption7);
MarkerOptions mMarkerOption8=new MarkerOptions();
mMarkerOption8.title("Map One").position(mLatnogGuj8).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_rest)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGuj8);
mMapView.addMarker(mMarkerOption8);
MarkerOptions mMarkerOption9=new MarkerOptions();
mMarkerOption9.title("Map One").position(mLatnogGuj9).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_small)).snippet("My Name is");
mMapView.addMarker(mMarkerOption9);
mLatlongBuilder.include(mLatnogGuj9);
MarkerOptions mMarkerOption10=new MarkerOptions();
mMarkerOption10.title("Map One").position(mLatnogGuj10).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_take)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGuj10);
mMapView.addMarker(mMarkerOption10);
//mMapView.animateCamera(CameraUpdateFactory.newLatLngBounds(mLatlongBuilder.build(), 120));
mBtnMapDetail.postDelayed(new Runnable() {
@Override
public void run() {
mMapView.animateCamera(CameraUpdateFactory.newLatLngBounds(mLatlongBuilder.build(), 120));
}
}, 250);
}
}
}
public class CustomInfoViewAdapter implements InfoWindowAdapter{
View mLayoutInfo;
public CustomInfoViewAdapter(Context _Context){
LayoutInflater mLayoutInflater=(LayoutInflater) _Context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mLayoutInfo=mLayoutInflater.inflate(R.layout.info_window_layout, null);
}
@Override
public View getInfoContents(Marker marker) {
return mLayoutInfo;
}
@Override
public View getInfoWindow(Marker marker) {
return null;
}
}
@Override
public void onInfoWindowClick(Marker arg0) {
// TODO Auto-generated method stub
}
@Override
public void onClick(View v) {
intiDetailFragment();
}
private void intiDetailFragment(){
MapDetailFragment mMapDetailFragment=new MapDetailFragment();
FragmentTransaction mFt=mFragMrg.beginTransaction();
mFt.add(R.id.frame_holder, mMapDetailFragment, "DetailFragment").addToBackStack("DetailFragment").commit();
}
}
输出屏幕截图:
现在,当您单击该 DetailMap 按钮时,它会将用户带到详细信息屏幕,我只想在该 SupportMapFragment 中显示一个标记,但我不知道为什么它仍然显示我在第一个 fragment 中添加的所有标记。
我的第二个 fragment 代码:
public class MapDetailFragment extends Fragment {
private GoogleMap mGoogleMapView;
private SupportMapFragment mSupportMapDetail;
private FragmentManager mFragMrg;
private LatLng mLatnogGujOne=new LatLng(18.9158, 72.8267);
private LatLngBounds.Builder mLatlongBuilder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View mView = inflater.inflate(R.layout.map_detail_screen, container,
false);
intView(mView);
return mView;
}
private void intView(View mView) {
mFragMrg=getChildFragmentManager();
mSupportMapDetail=(SupportMapFragment) mFragMrg.findFragmentByTag("map_home_detail");
if(mSupportMapDetail!=null){
mGoogleMapView=mSupportMapDetail.getMap();
if(mGoogleMapView!=null){
mGoogleMapView.clear();
mGoogleMapView.getUiSettings().setAllGesturesEnabled(true);
mGoogleMapView.getUiSettings().setMyLocationButtonEnabled(true);
mGoogleMapView.getUiSettings().setZoomGesturesEnabled(true);
mGoogleMapView.getUiSettings().setZoomControlsEnabled(true);
mGoogleMapView.setMyLocationEnabled(true);
mLatlongBuilder=new LatLngBounds.Builder();
MarkerOptions mMarkerOption=new MarkerOptions();
mMarkerOption.title("Map One").position(mLatnogGujOne).icon(BitmapDescriptorFactory.fromResource(R.drawable.map_pub)).snippet("My Name is");
mLatlongBuilder.include(mLatnogGujOne);
mGoogleMapView.addMarker(mMarkerOption);
mGoogleMapView.animateCamera(CameraUpdateFactory.newLatLngBounds(mLatlongBuilder.build(), 120));
}
}
}
}
这是我的 home_map.xml 的 xml 代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn_mapdetail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/mapdetail" />
<ViewSwitcher
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/viewSwitcher"
>
<LinearLayout
android:id="@+id/llMapDemo"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<fragment
android:id="@+id/map_home_fragment"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="map_home_fragment" />
</ViewSwitcher>
</LinearLayout>
另一个 xml 在这里 map_detail_screen.xml :
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:clickable="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/empty_photo" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/empty_photo" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/empty_photo" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/empty_photo" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/empty_photo" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/empty_photo" />
<FrameLayout
android:id="@+id/frame_detail"
android:layout_width="match_parent"
android:layout_height="350dp" >
<fragment
android:id="@+id/map_home_fragment_detail"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="map_home_detail" />
</FrameLayout>
</LinearLayout>
</ScrollView>
这是我的第二个屏幕输出:
正如您在我的第二个屏幕上看到的那样,它仍然在 map 上显示标记 为什么会发生这种情况?
任何人都可以提供适当的解决方案,所以当我返回上一个屏幕时,所有标记都与我添加的一样。
最佳答案
替换
mSupportMapDetail=(SupportMapFragment) mFragMrg.findFragmentByTag("map_home_detail");
与
mSupportMapDetail=(SupportMapFragment) mFragMrg.findFragmentById("map_home_fragment_detail");
也尝试将 findFragmentByTag
替换为 findFragmentById
无处不在..
关于android - 在一个 Activity 中使用两个 SupportMapFragment 但无法从我在第一个 SupportMapFragment 中添加的第二个 SupportMapFragment 中删除标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22946152/
我在一个 Activity 的两个不同 fragment 中使用两个 SupportMapFragment 时遇到奇怪的问题。 实际上,我的问题是在 OneFragment 中添加了 SupprtMa
我有 adt x86-64 mac 操作系统。我做了 maps v2 文档中的所有内容,但我仍然得到: 09-28 03:07:11.755: E/AndroidRuntime(549): Cause
当我在运行时用 SupportMapFragment 替换容器时,它不会填充 Parent。它仅部分占据屏幕。 HomeActivity2.java package com.example.mapde
是否可以检测 SupportMapFragment 的 OnScrollGesture 监听器。这是我一段时间前尝试解决但找不到解决方案的问题。我正在尝试检测用户是否滚动。我不想检查相机更新或位置更改
我正在做一个项目,我想在 fragment Activity 中显示 map fragment ,这就是我使用以下内容的原因, public class VenueMapFragment extend
我正在创建一个简单的应用程序,它在选项卡中使用谷歌地图,在其他选项卡中使用其他内容。问题是当我改变方向时 map 会重新创建,所以我转到 latlng 0,0 这是我的代码 MainAcitivy.j
我在我的代码中为 map 使用 SupportMapFragment (class="com.google.android.gms.maps.SupportMapFragment")。 当我将我的应用
我正在使用基于 map 的应用程序创建包含 map 和 Web View 的相册 View 。该问题发生在轮换期间,并且在 com.android.support:support-v4:19.1 上运
我正在尝试让 Google Maps Android API v2 在 HTC Desire 上的 Android 2.2 上运行。 我的 main.xml 包含以下内容:
我恳请您提供任何帮助,我已经为这个问题伤透了两天了,在解决这个问题之前我无法继续:/ 嗯,我正在尝试使用抽屉导航实现 GoogleMap,并且我勉强做到了这一点,但效果不太好。 这是我的类和 xml-
我有一个 GoogleMap,由 SupportMapFragment 类生成。有时,我有另一个 fragment 作为覆盖,其中包含有关特定位置的一些详细信息。但是,我可以通过带有详细信息的 fra
我正在尝试使用此覆盖 SupportMapFragment 上的 setOnMyLocationChangeListener map.setOnMyLocationChangeListener(new
我目前正在尝试将谷歌地图包含到我的应用程序中。主要目的是在加载 map 后自动将相机移动到具有缩放功能的设备当前位置。 为此,我需要一个位置管理器。在下面的代码中,我试图实现一个,但没有成功。我还尝试
我想显示 supportMapFragment 来填充我的主要 Activity ,顺便说一句,我在运行时请求了位置权限并且已成功授予。发生的事情是我得到的是空白的 map View ,没有其他任何东
我正在向屏幕添加另一个片段。此屏幕在 SupportMapFragment 中已有 en MapView,因此添加的 Fragment 应位于 MapView 之上。这个新 View 覆盖了屏幕的 2
mapFragment.getMapAsync(this) 在 map 中返回 null 我正在尝试设计一个带有谷歌地图和抽屉导航的应用程序,我不断收到尝试在空对象引用上调用虚拟方法“void com
我正在使用 FragmentTabHost 开发一个选项卡式应用程序。我的一个选项卡( fragment )是一个 map (扩展 fragment ),我只能在第一次选择它时看到,如果我选择其他选项
我需要在Dialog 中嵌入一个SupportMapFragment。这是我能想到的最好的: public class SupportMapFragmentDialog extends DialogF
我正在尝试让 SupportMapFragment 具有自定义布局,现在以下代码有效: @Override public View onCreateView(LayoutInflater inflat
我正在尝试在 fragment 中使用 SupportMapFragment。第一次启动时, map 显示没有任何错误。 但是当我对另一个 fragment 执行事务,然后返回到 map 时,我有一个
我是一名优秀的程序员,十分优秀!