Android Google Maps v2 - đặt mức thu phóng cho myLocation


105

Có thể thay đổi mức thu phóng cho myLocation bằng API Google Maps v2 mới không?

Nếu bạn đặt GoogleMap.setEnableMyLocation(true);, bạn sẽ có một nút trên bản đồ để tìm vị trí của mình.

Nếu bạn nhấp vào nó, bản đồ sẽ đưa bạn đến vị trí của bạn và phóng to nó ở một mức độ nào đó. Tôi có thể thay đổi mức thu phóng này nhỏ hơn hoặc lớn hơn không?


1
bạn có bất kỳ ý tưởng nào về mức thu phóng của nút mylocation không? Tôi muốn giá trị đó.
Prashanth Debbadwar

Câu trả lời:


211

Bạn có thể nghi ngờ rằng bạn có thể thay đổi nó khi nhấp chuột với myLocation Marker mặc định. Tuy nhiên, nếu bạn muốn ứng dụng tự động phóng to vị trí của bạn khi nó được tìm thấy, tôi sẽ kiểm tra câu trả lời của mình cho câu hỏi này

Lưu ý rằng câu trả lời tôi đã cung cấp không phóng to, nhưng nếu bạn sửa đổi phương thức onLocationChanged để giống như bên dưới, bạn có thể chọn bất kỳ mức thu phóng nào bạn thích:

@Override
public void onLocationChanged(Location location) 
{
    if( mListener != null )
    {
        mListener.onLocationChanged( location );

        //Move the camera to the user's location and zoom in!
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 12.0f));
    }
}

146

Bạn cũng có thể dùng:

mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );    

Để chỉ thay đổi giá trị thu phóng thành bất kỳ giá trị mong muốn nào giữa giá trị nhỏ nhất = 2,0 và giá trị lớn nhất = 21,0.

API cảnh báo rằng không phải tất cả các vị trí đều có ô ở các giá trị bằng hoặc gần mức thu phóng tối đa.

Xem phần này để biết thêm thông tin về các phương pháp thu phóng có sẵn trong CameraUpdateFactory.


1
Mức thu phóng mặc định là gì ??
IgorGanapolsky

14 là mức thu phóng mặc định
vin shaba

25

với vị trí - trong GoogleMaps SDK mới:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));

2
Có sự khác biệt nào giữa newLatLngZoom () và zoom () mà rất nhiều câu trả lời khác đã tham khảo không? Trong ứng dụng, từ góc độ người dùng cuối, chúng trông giống nhau.
portfoliobuilder

15

Giải pháp hơi khác so với HeatfanJohn, nơi tôi thay đổi mức thu phóng tương đối với mức thu phóng hiện tại:

// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));

15

Dưới đây là các mức thu phóng gần đúng và những gì chúng làm:

1: World
5: Landmass/continent
10: City
15: Streets
20: Buildings

vì vậy, bạn có thể làm điều gì đó như thế này để thu phóng đến mức đường phố chẳng hạn (lưu ý "15f" bên dưới là mức đường phố):

 override fun onMapReady(googleMap: GoogleMap?) {
    googleMap?.mapType = GoogleMap.MAP_TYPE_NORMAL
    googleMap?.addMarker(MarkerOptions()
            .position(LatLng(37.4233438, -122.0728817))
            .title("cool place")

            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE)))

    googleMap?.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(37.4233438, -122.0728817), 15f))

lưu ý: để bạn biết các vị trí khác nhau có thể có các mức thu phóng tối đa khác nhau. cố gắng sử dụng googleMap.maxZoomLevelnếu bạn muốn có mức thu phóng tối đa hoặc tối thiểu.


12

Trong phương thức onMapReady ()

thay đổi zoomLevel thành bất kỳ giá trị mong muốn nào.

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));

2

bạn chỉ phải viết một dòng trong maps_activity.xml

map:cameraZoom="13"

Tôi hy vọng điều này sẽ giải quyết vấn đề của bạn ...


2

Bạn có thể dùng

    CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
    CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);

1

Ngay cả gần đây tôi cũng có cùng một truy vấn .... một số cách mà không có setmaxzoom được đề cập ở trên hoặc bản đồ khác: cameraZoom = "13" không hoạt động Vì vậy, tôi thấy rằng phụ thuộc mà tôi sử dụng đã cũ, vui lòng đảm bảo sự phụ thuộc của bạn đối với bản đồ google là chính xác đây là cách sử dụng mới nhất này

compile 'com.google.android.gms:play-services:11.8.0' 

1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Điều này sẽ không có hiệu ứng hoạt ảnh.


0
Location locaton;
double latitude = location.getlatitude;
double longitude = location.getlongitude;

Nếu bạn muốn lưu phóng hoặc lấy luôn, bạn chỉ cần gọi điện như sau

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);

0

Hầu hết các câu trả lời ở trên đều không được dùng nữa hoặc tính năng thu phóng hoạt động bằng cách giữ lại vĩ độ và kinh độ hiện tại và không thu phóng đến vị trí chính xác mà bạn muốn. Thêm mã sau vào phương thức onMapReady () của bạn .

@Override
public void onMapReady(GoogleMap googleMap) {
    //Set marker on the map
    googleMap.addMarker(new MarkerOptions().position(new LatLng(0.0000, 0.0000)).title("Marker"));
    //Create a CameraUpdate variable to store the intended location and zoom of the camera
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(0.0000, 0.0000), 13);
    //Animate the zoom using the animateCamera() method
    googleMap.animateCamera(cameraUpdate);
}

0

Tôi đã thử với "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f));" nhưng nó không làm việc cho tôi. Vì vậy, tôi đã sử dụng hoạt ảnh này để phóng to khi bắt đầu.

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.