Google지도 API v2의 기본 위치와 확대 / 축소 수준을 어떻게 설정하나요?


91

내지도가 표시되면 항상 고정 된 위치 (아프리카 근처)에서 시작합니다.

그런 다음 다음 코드를 사용하여 원하는 위치에지도를 중앙에 배치합니다.

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));

내 질문은지도가 표시되기 전에 기본 위치와 확대 / 축소 수준을 설정할 수 있다는 것입니다.

사용자가 처음에 애니메이션을 보는 것을 원하지 않기 때문입니다.

감사.


이 질문이 도움이되었습니다 .... 위치가 활성화되지 않은 경우에도 ... animateCamera가 아프리카 어딘가를 가리 킵니다. ... moveCamera이를위한 최상의 솔루션입니다
Devrath

3
hahahhaha ....... + 1이 질문에 내 마음을 물었다. : D ... "항상 고정 된 위치 (아프리카 근처)에서 시작합니다."........ 로플 ..... 감사합니다.
akash89

2
@ akash89 예상대로 LatLng (0.0,0.0)에서 시작합니다. google.com/maps/@0,0,5z 바닥에서 말 그대로 웃게 만드는 이유가 무엇인지 모르겠습니다 (오해가 아니라면). 당신이 행복해서 기쁩니다 :)
Navid Vafaei

답변:


175

이것을 사용하여 애니메이션없이 직접 확대 / 축소 할 수 있습니다.

map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );

감사합니다, 내가 필요 그냥 :)
dong221

최소 위도 / 경도 및 최대 위도 / 경도를 설정하는 방법은 무엇입니까 ???
Pratik Butani

이에 대한 새 질문을 추가하여 전체 답변을 게시 할 수 있지만 간단히 말해 LatLngBounds.Builder를 사용하여 경계를 만들고이를 사용해야합니다.
Moh Sakkijha 2013

1
@Saksak 내 문제는 GPS를 잡고 MyLocation사용자의 위치로지도를 이동하고 확대 / 축소 할 수 있도록 기다리고 있다는 것입니다. 지도가 XML로 초기화 되었기 때문에 점프가 발생하지 않도록하는 방법을 알 수 없습니다. 이상적으로 MyLocation는 발견 될 때까지지도를 숨긴 다음 표시합니다.
theblang

지도를 배치했을 때 오류가 발생하고 변수 '지도'를 생성하라고했습니다. 수입이 가능한가요?
Hanzawa Naoki 2014

86

여기에서 문서를 살펴보십시오.

https://developers.google.com/maps/documentation/android-api/map#configure_initial_state

이를 수행하는 방법은지도를 XML을 통해 추가하는지 프로그래밍 방식으로 추가하는지에 따라 약간 다릅니다. XML을 사용하는 경우 다음과 같이 할 수 있습니다.

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:map="http://schemas.android.com/apk/res-auto"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.SupportMapFragment"
  map:cameraBearing="112.5"
  map:cameraTargetLat="-33.796923"
  map:cameraTargetLng="150.922433"
  map:cameraTilt="30"
  map:cameraZoom="13"/>

프로그래밍 방식으로 수행하는 경우 다음을 수행 할 수 있습니다.

CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(new LatLng(-33, 150))
    .zoom(13)
    .build();
MapFragment.newInstance(new GoogleMapOptions()
    .camera(camera));

1
좋은 대답입니다. 사실 이것은이 질문에 더 적합합니다.
MightySeal

2
XML에서 린트 오류가 발생합니다Unexpected namespace prefix "map" found for tag fragment
Muhammad Babar 2014

xmlns : map = "schemas.android.com/apk/res-auto"를 사용하더라도 여전히 동일한 오류가 발생합니다. 이 xmlns : tools = " schemas.android.com/tools " 를 추가 하고 "map :"대신 "tools :"를 사용하십시오.
Guillaume Ilitch Tchaïkovsky


레이아웃 속성을 찾고 완벽하게 작동합니다. 감사합니다
Abhishek Garg

5

프로그래밍 방식으로 Google Map초기 에로드하려는 Location경우이 코드를 사용할 수 있습니다.

FragmentManager fm = getFragmentManager(); // getChildFragmentManager inside fragments.
CameraPosition cp = new CameraPosition.Builder()
                    .target(initialLatLng) // your initial co-ordinates here. like, LatLng initialLatLng
                    .zoom(zoom_level)
                    .build();
SupportMapFragment mapFragment = SupportMapFragment.newInstance(new GoogleMapOptions().camera(cp));
fm.beginTransaction().replace(R.id.rl_map, mapFragment).commit();

다음 코드를 추가하십시오. layout

<RelativeLayout
       android:id="@+id/rl_map"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent" />

이것은 GoogleMap특히 LocationinitialLatLng 에서 직접 로드 됩니다 .


3

나는 핸들을 생성 SupportMapFragment하고 설정 visibilityView.INVISIBLE사용 SupportMapFragment.getView().setVisibility(). 그런 다음 onLocationChanged내 클래스가 구현 하는 콜백 에서 true인지 확인 INVISIBLE하고 설정 VISIBLE합니다. 이것은 당신이 시작 위치를 동적으로 초기화 할 수있게하면서 당신이 짐에서 보는 점프를 제거합니다. 제 경우에는 사용자의 위치를 ​​중심으로 카메라를 중앙에 배치 onLocationChanged하므로 setMyLocationEnabled(true).

요구 사항은 다를 수 있지만 어느 쪽이든 가시성 INVISIBLE을 설정 VISIBLE한 다음 적절한 데이터가로드 된 후 설정할 좋은 위치를 찾아야합니다 .


2

정적 latlong을 사용하여 직접 CameraUpdate를 사용할 수 있습니다.

 LatLong latlong = new LatLong(lat, long);
 CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
                mGoogleMap.moveCamera(cameraPosition);
                mGoogleMap.animateCamera(cameraPosition);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.