התאמת המצלמה

המצלמה מאפשרת לשנות את נקודת המבט של המשתמש במפה. אפשר להשתמש במצבי המצלמה כדי לשלוט בהתנהגות של תצוגת המפה במהלך הניווט. כדי להגדיר את מצב המצלמה, צריך להשתמש באחת מהשיטות הבאות שמשויכות למצלמה:

  • עקוב אחר המיקום שלי (GoogleMap.followMyLocation) – מצב המצלמה המוגדר כברירת מחדל לניווט. במצב הזה, המצלמה מוגדרת למכשיר או לרכב. במהלך הניווט, המצלמה פונה באופן אוטומטי לכיוון הנסיעה. כשמפעילים את ההגדרה של רמת הפירוט הגבוהה (NavigationMapStyle.HIGH_DETAIL), קווי המתאר של בניינים דו-ממדיים מוצגים כשרמת הזום היא 19 ומעלה.

  • הצמדת מיקום (GoogleMap.animateCamera ו-GoogleMap.moveCamera) — תיקון המצלמה במיקום ספציפי. במצב כזה, ניתן להגדיר את מיקום המצלמה יחד עם מאפייני מצלמה אחרים, כמו כיוון ביחס לצפון, הטיה, מרחק מתצוגה וכו'. כשבוחרים את התצוגה הזו ומסמנים את הניווט ב-Navigator, לוחצים על מרכז מחדש.

  • הצגת סקירה כללית של המסלול (NavigationView.showRouteOverview או SupportNavigationFragment.showRouteOverview) – מציגה סקירה כללית של המסלול הנותר, הזזה ושינוי מרחק התצוגה לפי הצורך כדי להתאים את המסלול לתצוגת המפה. כשבוחרים בתצוגה הזו, ניתן לראות את הלחצן מרכז מחדש.

לחיצה על הלחצן מרכז מחדש מעבירה את המצלמה למצב followMyLocation.

מעקב אחר מצב המיקום שלי

הגדרת המצלמה הנפוצה ביותר היא להגדיר את המצלמה למכשיר או לרכב, ולהציג את המיקום הנוכחי שלה במסלול. במצב המצלמה, אפשר לראות את המסלול כשהמכונית נמצאת תמיד בכיוון המסך במבט בזווית (CameraPerspective.TILTED), או לראות את המכונית נוסעת צפונה (CameraPerspective.TOP_DOWN_NORTH_UP) או בכיוון (CameraPerspective.TOP_DOWN_HEADING_UP) תמיד בחלק העליון של המסך.

קטע הקוד הבא משתמש בנקודת המבט TILTED:

// Set the camera to follow the device (vehicle):
mNavFragment.getMapAsync(googleMap -> googleMap.followMyLocation(CameraPerspective.TILTED))

הצמדה למצב מיקום

המצב Pinned נותן לכם הכי הרבה שליטה במצלמה. במצב הזה צריך להציב את המצלמה במיקום ספציפי, לשנות את כיוון התצוגה של המצלמה, לשנות את ההטיה כדי להגדיר את זווית הצפייה ולהגדיר את מרחק התצוגה של המצלמה.

קטע הקוד הבא מדגים כמה מהדרכים הנפוצות להעברת המצלמה.

private static final LatLng SYDNEY = new LatLng(-33.88, 151.21);
private static final LatLng MOUNTAIN_VIEW = new LatLng(37.4, -122.1);

private GoogleMap map;
... // Obtain the map from a SupportNavigationFragment or NavigationView.

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY, 15));

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(MOUNTAIN_VIEW)      // Sets the center of the map to Mountain View
    .zoom(17)                   // Sets the zoom
    .bearing(90)                // Sets the orientation of the camera to east
    .tilt(30)                   // Sets the tilt of the camera to 30 degrees
    .build();                   // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

הצגת מצב סקירת המסלול

הגדרת המצלמה של showRouteOverview מציגה את התהליך כולו. לנסיעות עם מספר יעדים, המצב הזה מציג את החלק שלא נסעת במסלול.

// Place the camera to see the remaining route:
mNavFragment.showRouteOverview();

הגדרה של רמת פירוט גבוהה

כשמפעילים את ההגדרה של רמת הפירוט הגבוהה, קווי המתאר של בניינים בדו-ממד מוצגים כשרמת הזום של המצלמה מוגדרת ל-19 או יותר. אפשר לשנות את רמת הזום במהלך הניווט באמצעות אובייקט FollowMyLocationOptions. כך תוכלו להגדיל את מרחק התצוגה מספיק כדי להציג קווי מתאר של בניינים בדו-ממד כשהמשתמש מתקרב ליעד.

הדוגמה הזו מפעילה את ההגדרה של רמת פירוט גבוהה:

  navigationView.setNavigationMapStyle(NavigationMapStyle.HIGH_DETAIL);

בדוגמה הבאה מבטלים את רמת הזום של המצלמה במהלך הניווט. מרחק התצוגה מוגדר ל-15, וזו רמה גבוהה מספיק כדי להציג קווי מתאר של בניינים דו-ממדיים.

  googleMap.followMyLocation(
              FollowMyLocationOptions.builder(CameraPerspective.TILTED)
                      .setZoomLevel(15.0f)
                      .build());

השלב הבא

ראו התאמה אישית של ממשק המשתמש של הניווט כדי ללמוד איך להתאים אישית את הדרך שבה משתמשים מקיימים אינטראקציה עם המפה שלכם, על ידי קביעת הרכיבים המובנים של ממשק המשתמש יופיעו על המפה.