การ bound แผนที่เพื่อให้เห็นเฉพาะวัตถุที่ต้องการ
การ bound แผนที่
คือการเปลี่ยนตำแหน่งและระดับซูมของแผนที่เพื่อให้ครบคลุมพื้นที่ที่เราต้องการ โดยพื้นที่จะกำหนดด้วยตำแหน่งอย่างน้อย 2 ตำแหน่ง โจทย์ที่เหมาะกับการใช้ bound เช่น ต้องการให้ผู้ใช้เห็นหมุดจากหารค้นหาทั้งหมด เป็นต้น
การใช้งานสามารถเรียกได้โดยใช้ method Map.bound()
Pin p1 = new Pin(new MapLocation(100,13),"http://map-test.longdo.com/api-mobile/android/document/v2/images/pin.png");
Pin p2 = new Pin(new MapLocation(101,14),"http://map-test.longdo.com/api-mobile/android/document/v2/images/pin.png");
Pin p3 = new Pin(new MapLocation(100.5,13),"http://map-test.longdo.com/api-mobile/android/document/v2/images/pin.png");
ldmap.pushPin(p1);
ldmap.pushPin(p2);
ldmap.pushPin(p3);
ldmap.bound(Arrays.asList((IMarker)p1,(IMarker)p2,(IMarker)p3));
ตัวอย่างนี้เป็นการวาดหมุดลงไปบนแผนที่ 3 หมุด แล้วสั่งให้แผนที่ซูม/เปลี่ยนตำแหน่ง เพื่อให้เห็นหมุดทั้งหมด (Pin
, Line
, Polygon
เป็น class ที่ implement interface IMarker
ทั้งหมด)
Map.bound() มี overload ที่ทำให้เราสามารถควบคุมการทำงานได้ละเอียดขึ้นคือ
public MapLocation bound(List<IMarker> markerList, boolean doMoveAnimation, boolean doZoomAnimation, boolean onlyReturnValue, boolean fixCenter, PointF offset)
- markerList คือหมุด เส้น หรือ โพลิกอน ที่ต้องการจะ bound
doMoveAnimation
คือ แสดง animation ของการเลื่อนแผนที่ระหว่างที่ bounddoZoomAnimationคือ
แสดง animation ของการซูมแผนที่ระหว่างที่ boundonlyReturnValue
คือ คืนตำแหน่งและซูมของแผนที่หลังจากการ bound แต่ไม่ต้อง bound แผนที่จริงๆfixCenter
คือ bound โดยไม่ขยับจุดกลาง บางครั้งการ bound อาจจะทำให้มุมมองผู้ใช้หลุดออกจากตำแหน่งปัจจุบันมากเกินไป การล็อคจุดกลางแผนที่จะทำให้แผนที่เปลี่ยนแค่ซูมแต่ไม่เปลี่ยนตำแหน่งoffset
ของการ bound จะใช้ในกรณีที่ต้องการให้พื้นที่ของการ bound เล็กลง เช่น กรณีที่มี view อื่นบังแผนที่ ซึ่งถ้า bound ตามปกติ อาจจะทำให้หมุดโดนบังด้วย view ดังกล่าวได้
ตัวอย่างการ bound แบบมี offset