나는 현재 내 무술 조직 용 앱을 개발 중입니다. 내 상태 내의 각 무술 도장의 다른 위치를 표시하는 SupportMapFragment를 사용하는 단편을 갖고 싶습니다. 현재 "위치"라는 탭이있는 탐색 용 서랍이 설정되어 있습니다. 나는 Tutsplus의 사람들이 Zoo 응용 프로그램을 만들고 해당 응용 프로그램 내에지도를 포함하는 방법을 따라합니다. 내가보고있는 코드가 발견되었습니다 here. Youtube의 코드 및 튜토리얼에서 카메라를 제어하고 작동하도록 맵을 얻으려면 getMap().animateCamera...
을 사용합니다. 나는 이미 getMap()이 Android에서 제거되었고, getMapAsync(this)
이 더 나은 옵션이라는 것을 알고 있지만, 코드가 현재 설정되어있는 코드로 getMapAsync()
을 어떻게 처리해야하는지 고민 중입니다. 일부는 사용할 수 있습니다. 보조. Google의 모든 문서를 살펴본 후이 사이트의 여러 스레드를 읽었지만 많은 행운이 없었습니다. 여기 내 LocationFragment.java
아래 내 코드입니다 : 아래SupportMapFragment Java Android Studio에서 getMap()을 사용하는 대신
public class LocationFragment extends SupportMapFragment {
public static LocationFragment getInstance() {
LocationFragment fragment = new LocationFragment();
return fragment;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
CameraPosition position = CameraPosition.builder()
.target(new LatLng(42.921966, -85.718533))
.zoom(16f)
.bearing(0.0f)
.tilt(0.0f)
.build();
getMap().animateCamera(CameraUpdateFactory.newCameraPosition(position), null);
getMap().setMapType(GoogleMap.MAP_TYPE_HYBRID);
getMap().setTrafficEnabled(true);
getMap().getUiSettings().setZoomControlsEnabled(true);
MarkerOptions options = new MarkerOptions().position(new LatLng(42.921966, -85.718533));
options.title("KFCOM");
options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
getMap().addMarker(options);
getMap().setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
marker.showInfoWindow();
return true;
}
});
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint("https://gist.githubusercontent.com/anonymous/101ffbf7e1aed60b7caf7d3d5418bfde/raw/43b5d1fa6862fd1dce84044821cdf1a9d48b6ca2")
.build();
PinsApiInterface pinsApiInterface = adapter.create(PinsApiInterface.class);
pinsApiInterface.getStreams(new Callback<List<Pin>>() {
@Override
public void onResponse(Call<List<Pin>> pins, Response<List<Pin>> response) {
for(Pin pin : response.body()) {
MarkerOptions options = new MarkerOptions().position(new LatLng(pin.getLatitude(), pin.getLongitude()));
options.title(pin.getName());
options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
getMap().addMarker(options);
}
}
@Override
public void onFailure(Call<List<Pin>> call, Throwable t) {
}
});
}
}
그리고는 "위치"탭을 포함하여 다른 탭 사이의 탐색 서랍 및 스위치, 인스턴스 내 주요 활동입니다. 주 활동에서 변경해야 할 것이 있는지 확실하지 않기 때문에 모든 코드를 포함 시켰습니다. 조각 사이를 전환하는 코드는 코드 하단의 onDrawerSectionItemClickedEvent
에 있습니다.
public class Home extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mActionBarDrawerToggle;
private String mCurrentFragmentTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mActionBarDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.string.drawer_opened,
R.string.drawer_closed)
{
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
if(getSupportActionBar() != null)
getSupportActionBar().setTitle(R.string.drawer_opened);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
if(getSupportActionBar() != null)
getSupportActionBar().setTitle(R.string.drawer_closed);
}
};
mDrawerLayout.addDrawerListener(mActionBarDrawerToggle);
displayInitialFragment();
}
private void displayInitialFragment() {
getSupportFragmentManager().beginTransaction().replace(R.id.container, HomeFragment.getInstance()).commit();
mCurrentFragmentTitle = getString(R.string.Home);
}
@Override
public void onPostCreate(Bundle savedInstanceState){
super.onPostCreate(savedInstanceState);
mActionBarDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mActionBarDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mActionBarDrawerToggle.onOptionsItemSelected(item))
return true;
return super.onOptionsItemSelected(item);
}
@Override
protected void onStart() {
super.onStart();
EventBus.getInstance().register(this);
}
@Override
protected void onStop() {
EventBus.getInstance().unregister(this);
super.onStop();
}
@Subscribe
public void onDrawerSectionItemClickedEvent(DrawerSectionItemClickedEvent event) {
mDrawerLayout.closeDrawers();
if(event == null || TextUtils.isEmpty(event.section) || event.section.equalsIgnoreCase(mCurrentFragmentTitle))
{
return;
}
Toast.makeText(this, "Home: Section Clicked: " + event.section, Toast.LENGTH_SHORT).show();
if(event.section.equalsIgnoreCase("locations")){
getSupportFragmentManager().beginTransaction().replace(R.id.container, LocationFragment.getInstance()).commit();
} else if (event.section.equalsIgnoreCase("current members"))
{
getSupportFragmentManager().beginTransaction().replace(R.id.container, MembersFragment.getInstance()).commit();
} else if (event.section.equalsIgnoreCase("home"))
{
getSupportFragmentManager().beginTransaction().replace(R.id.container, HomeFragment.getInstance()).commit();
} else {
return;
}
mCurrentFragmentTitle = event.section;
}
}
감사를 호출! 내가 겪은 문제가 해결 됐어. –