2
AlertDialog 내에 표시된 MapFragment를 가져오고 싶습니다.AlertDialog에서 작동하도록 MapFragment 가져 오기
-
:
- http://www.stackoverflow.com/questions/14659705/android-maps-api-v2-in-dialog [작동하지 : 맵 오브젝트가 인스턴스화하지]
- http://www.stackoverflow.com/questions/13733299/initialize-mapfragment-programmatically-with-maps-api-v2 [작동하지 : 정적 비 정적 클래스의 메소드에 문제] 그 중 하나를 시도
나는 다음과 같은 질문을 읽은 후이를 묻는 종료 [괄호 사이에 관찰 내 결과이며, 누군가가 가질 수있는 일을 망쳐 내 놀라운 재능을 기각하도록 작동하지만 난 하나를 아니에요있어]를
, 또는이 둘의 엉터리 결혼, 입술 IllegalArgument 또는 NullPointer 예외 중 하나입니다. 때로는 확장 된 MapFragment에서 ID와 연관된보기를 찾을 수 없다는 것에 대해 우는 소리가 들립니다.
내가 지금까지있어 관련 코드 :. 당신이
public class DialogMapFragment extends DialogFragment {
private SupportMapFragment fragment;
public DialogMapFragment() {
fragment = new SupportMapFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.mapdialog, container, false);
getDialog().setTitle("");
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.mapView, fragment).commit();
return view;
}
public SupportMapFragment getFragment() {
return fragment;
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp" >
<FrameLayout
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
</RelativeLayout>`
하여 대화 상자에서지도 조각을 보여주고) (새 DialogMapFragment하여 대화 상자를 표시 할 수 있습니다
public class PropDetailActivity extends Activity
{
static final int PICK_REQUEST = 70003;
private static final int TABLE_PROP_TYPES = 13,
ADD_ID = Menu.FIRST + 1,
DELETE_ID = Menu.FIRST + 3;
Button btnLocation;
private LocationManager daLocationManager;
private String daProvider;
private double daCurrentLat, daCurrentLong;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.prop_detail);
btnLocation = (Button) findViewById(R.id.btnLocation);
btnLocation.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
openGps();
}
});
doMapGubbinz();
}
private void openGps()
{
LayoutInflater inflater = LayoutInflater.from(this);
LatLng here = new LatLng(daCurrentLat, daCurrentLong);
MapFragment fragment = PreparedMapFragment.newInstance(here);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.mapView, fragment)
.commit();
//daMap = fragment.getMap();
View gps = inflater.inflate(R.layout.location_gps, null);
new AlertDialog.Builder(this)
.setTitle("Property location")
.setView(gps)
.show();
// Marker currentLoc = daMap.addMarker(new MarkerOptions().position(here).title("Ubicación actual"));
//
// daMap.moveCamera(CameraUpdateFactory.newLatLngZoom(here, 15));
//
// daMap.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);
}
public void doMapGubbinz()
{
daLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
daProvider = daLocationManager.getBestProvider(criteria, false);
daLocationManager.requestLocationUpdates(daProvider, 400, 1, this);
Location location = daLocationManager.getLastKnownLocation(daProvider);
if (location != null)
{
System.out.println("Provider " + daProvider + " has been selected.");
onLocationChanged(location);
}
daCurrentLat = location.getLatitude();
daCurrentLong = location.getLongitude();
}
static public class PreparedMapFragment extends MapFragment
{
static MapFragment frag;
public PreparedMapFragment()
{
super();
}
public static MapFragment newInstance(LatLng pos)
{
frag = new MapFragment();
UiSettings settings = frag.getMap().getUiSettings();
settings.setAllGesturesEnabled(false);
settings.setMyLocationButtonEnabled(false);
frag.getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(pos, 16));
frag.getMap().addMarker(new MarkerOptions().position(pos).title("Ubicación actual"));
frag.getMap().animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);
return frag;
}
// @Override
// public View onCreateView(LayoutInflater arg0, ViewGroup arg1, Bundle arg2)
// {
// View v = super.onCreateView(arg0, arg1, arg2);
// initMap();
// return v;
// }
//
// private void initMap()
// {
// UiSettings settings = getMap().getUiSettings();
//
// settings.setAllGesturesEnabled(false);
// settings.setMyLocationButtonEnabled(false);
//
// getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(daCurrentPos, 16));
//
// getMap().addMarker(new MarkerOptions().position(daCurrentPos).title("Ubicación actual"));
//
// getMap().animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);
// }
}
}