Android Google Maps v2 - ตั้งค่าระดับการซูมสำหรับ myLocation


105

เป็นไปได้ไหมที่จะเปลี่ยนระดับการซูมสำหรับ myLocation ด้วย Google Maps API v2 ใหม่

หากคุณตั้งค่าไว้GoogleMap.setEnableMyLocation(true);คุณจะได้รับปุ่มบนแผนที่เพื่อค้นหาตำแหน่งของคุณ

หากคุณคลิกที่แผนที่นั้นแผนที่จะนำคุณไปยังตำแหน่งของคุณและขยายไปยังระดับหนึ่ง ฉันสามารถเปลี่ยนการซูมนี้ให้น้อยลงหรือมากขึ้นได้หรือไม่


1
คุณมีความคิดเกี่ยวกับระดับการซูมของปุ่ม mylocation หรือไม่? ฉันต้องการค่านั้น
Prashanth Debbadwar

คำตอบ:


211

เป็นที่น่าสงสัยคุณสามารถเปลี่ยนได้เมื่อคลิกด้วย myLocation Marker เริ่มต้น อย่างไรก็ตามหากคุณต้องการให้แอปขยายตำแหน่งของคุณโดยอัตโนมัติเมื่อพบฉันจะตรวจสอบคำตอบสำหรับคำถามนี้

โปรดทราบว่าคำตอบที่ฉันให้ไว้ไม่ได้ซูมเข้า แต่หากคุณปรับเปลี่ยนวิธีการ onLocationChanged ให้เหมือนกับวิธีการด้านล่างคุณสามารถเลือกระดับการซูมที่คุณต้องการได้:

@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

คุณยังสามารถใช้:

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

เพียงแค่เปลี่ยนค่าการซูมเป็นค่าที่ต้องการระหว่างค่าต่ำสุด = 2.0 และค่าสูงสุด = 21.0

API เตือนว่าสถานที่บางแห่งไม่ได้มีไทล์ที่ค่าอยู่ที่หรือใกล้กับการซูมสูงสุด

ดูนี้CameraUpdateFactoryสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการซูมที่มีอยู่ใน


1
ระดับการซูมเริ่มต้นคืออะไร ??
IgorGanapolsky

14 คือระดับการซูมเริ่มต้น
vin shaba

25

พร้อมตำแหน่ง - ใน GoogleMaps SDK ใหม่:

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

2
มีความแตกต่างระหว่าง newLatLngZoom () และ zoom () ซึ่งมีการอ้างถึงคำตอบอื่น ๆ มากมายหรือไม่? ในแอปจากมุมมองของผู้ใช้ปลายทางสิ่งเหล่านี้ดูเหมือนกัน
portfoliobuilder

15

วิธีแก้ปัญหาที่แตกต่างจาก HeatfanJohn เล็กน้อยโดยที่ฉันเปลี่ยนการซูมให้เป็นระดับการซูมปัจจุบัน:

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

15

นี่คือระดับการซูมโดยประมาณและสิ่งที่พวกเขาทำ

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

ดังนั้นคุณสามารถทำสิ่งนี้เพื่อซูมไปที่ระดับถนนได้เช่น (สังเกตว่า "15f" ด้านล่างคือระดับถนน):

 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))

หมายเหตุ: เพื่อให้คุณทราบว่าตำแหน่งต่างๆสามารถมีระดับการซูมสูงสุดที่แตกต่างกันได้ ลองใช้googleMap.maxZoomLevelหากคุณต้องการได้ระดับการซูมสูงสุดหรือต่ำสุด


12

ใน onMapReady () วิธีการ

เปลี่ยนระดับการซูมเป็นค่าที่ต้องการ

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


2

คุณสามารถใช้ได้

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

1

แม้ว่าฉันเพิ่งจะมีข้อความค้นหาเดียวกัน .... บางวิธีที่ไม่มี setmaxzoom ที่กล่าวถึงข้างต้นหรือแผนที่อื่น ๆ : cameraZoom = "13" ใช้งานไม่ได้ดังนั้นฉันจึงพบว่า Depenedency ที่ฉันใช้นั้นเก่าโปรดตรวจสอบให้แน่ใจว่าการอ้างอิงของคุณสำหรับ Google Maps ถูกต้องนี่เป็นการใช้ใหม่ล่าสุด

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


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

หากคุณต้องการบันทึกการซูมหรือใช้งานตลอดเวลาคุณต้องเรียกสิ่งต่อไปนี้

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

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

0

คำตอบส่วนใหญ่ข้างต้นไม่สนับสนุนหรือการซูมทำงานโดยการรักษาละติจูดและลองจิจูดปัจจุบันและไม่ได้ซูมไปยังตำแหน่งที่คุณต้องการ เพิ่มรหัสต่อไปนี้ในเมธอด onMapReady () ของคุณ

@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

ฉันลองใช้ "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f));" แต่มันไม่ได้ผลสำหรับฉัน ดังนั้นฉันจึงใช้ภาพเคลื่อนไหวนี้เพื่อซูมเข้าเมื่อเริ่มต้น

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.