Skip to content

[2.x] การแสดงหมุดบนแผนที่

Kamonpop Jarujit edited this page Dec 12, 2018 · 2 revisions

การปัดหมุด หรือ Marker เป็นฟีเจอร์ที่สำคัญสำหรับการใช้งานแผนที่ นักพัฒนาสามารถเพิ่มหมุดลงบนแผนที่ได้อย่างง่ายดายผ่านทาง Longdo Map SDK for iOS


การปักหมุดที่เก็บภาพไว้ในโปรแกรม

ให้นักพัฒนานำภาพของหมุดไปเก็บเอาไว้ใน Images.xcassets โดยควรเก็บภาพให้มีความละเอียดสำหรับทุกความละเอียดหน้าจอ ดังภาพ

Screen Shot 2015-08-19 at 10.10.18 PM

จากนั้นสั้งโหลดรูปภาพ กำหนดพิกัด สร้างหมุด แล้วทำการปักหมุด ดังชุดคำสั่งด้านล่าง

UIImage *icon = [UIImage imageNamed:@"MarkerBuilding"];
MMLocation location = MMLocationMake(13.722634, 100.529313);
MMMarker *marker = [MMMarker markerWithImage:icon andLocation:location];
[_mapView addMarker:marker];

Screen Shot 2015-08-19 at 10.56.14 PM

ตัวอย่างที่เสร็จแล้ว


การปักหมุดจากภาพบนอินเทอร์เน็ต

เพื่อความสะดวกในการใช้งาน Longdo Map SDK รองรับการวาดหมุดจากรูปแบบที่อยู่บนอินเทอร์เน็ต นักพัฒนาสามารถใส่ URL ของรูปภาพให้ SDK เป็นผู้ดาวน์โหลด รูปภาพมาแสดงได้

ข้อพึงระวัง รูปภาพที่ต้องการนำมาแสดงความมี URL แยกขนาดความละเอียดของแต่ละหน้าจอด้วย

int displayDensity = (int)[UIScreen mainScreen].scale;
NSString *iconUrl = [NSString stringWithFormat:@"http://api.longdo.com/map/images/icons_%dx/bts.png", displayDensity];
MMLocation location = MMLocationMake(13.723767, 100.529332);
MMMarker *marker = [MMMarker markerWithImageUrl:iconUrl andLocation:location];
[_mapView addMarker:marker];

Screen Shot 2015-08-19 at 10.55.46 PM

ตัวอย่างที่เสร็จแล้ว


การลบหมุด

การลบหมุดสามารถทำผ่านได้ทางฟังก์ชั่น removeMarker

ตัวอย่างข้างล่างนี้เป็นการลบหมุดเมื่อหมุดถูกคลิกโดยผู้ใช้งาน

// Click
- (void)mapView:(MMMapView *)mapView clickOnMarker:(MMMarker *)marker {
  [_mapView removeMarker:marker];
}

ตัวอย่างที่เสร็จแล้ว


เพิ่มเติมเกี่ยวกับการใช้งานหมุด

MMMapView

การควบคุมหมุดสามารถทำได้โดยตรงผ่านทาง Object MMMarker อย่างไรก็ดี Object MMMapView เป็นส่วนหลักในการแสดงผล โดยมีฟังกืชั่นให้เรียกใช้งานได้ดังนี้

- (NSArray *)markers;

ส่ง Array ของหมุดทั้งหมดที่ถูกปักบนแผนที่

- (void)addMarker:(MMMarker *)marker;

เพิ่มหมุดลงในแผนที่

- (void)removeMarker:(MMMarker *)marker;

ลบหมุดออกจากแผนที่โดยใช้ Object ของหมุด

- (void)removeMarkerByName:(NSString *)name;

ลบหมุดออกจากแผนที่โดยใช้ชื่อของหมุด

- (void)removeAllMarkers;

ลบหมุดทั้งหมดออกจากแผนที่

MMMarker

นักพัฒนาสามารถดูฟังก์ชั่นสามารถเรียกใช้งานได้ของคลาส MMMarker ได้ที่ไฟล์ MMMapView.h โดยจะขออธิบายบางส่วนดังนี้

+ (MMMarker *)markerWithImage:(UIImage *)image andLocation:(MMLocation)location;

สร้างหมุดใหม่ด้วยรูปภาพจาก UIImage

+ (MMMarker *)markerWithImageUrl:(NSString *)url andLocation:(MMLocation)location;

สร้างหมุดใหม่ด้วยรูปภาพจากอินเทอร์เน็ต

- (MMMarker *)setName:(NSString *)name;

ตั้งชื่อให้กับหมุด สำหรับใช้ในการลบหมุดทีละหลายอันผ่านทางฟังก์ชั่น removeMarkerByName ได้

- (MMMarker *)setImage:(UIImage *)image;

ตั้งรูปภาพให้กับหมด

- (MMMarker *)setLocation:(MMLocation)location;

ตั้งตำแหน่งของหมด

- (MMMarker *)setOffset:(CGPoint)offset;

ตั้งการเยื้องของจุดศูนย์กลางของหมุด โดยกึ่งกลางหมุดคือ (0, 0) โดยการเยี้ยงเป็นสัดส่วนของขนาดของหมุด มีขอบเขตของการเยื้องในระยะของหมุดคือ (-0.5, -0,5) ถึง (0.5, 0,5)

- (MMMarker *)setWeight:(int)weight;

ตั้งน้ำหนักของหมุด หมุดที่มีน้ำหนักมากจะถูกวาดทับโดยหมุดที่มีน้ำหนักน้อย

- (MMMarker *)setData:(NSDictionary *)data;

แนบ NSDictionary เข้าไปกับหมุด สำหรับใช้หมุดในการเก็บข้อมูลได้

- (MMMarker *)setMinZoom:(int)minZoom;

ตั้งค่าซูมต่ำสุดที่จะยังแสดงหมุด

- (MMMarker *)setMaxZoom:(int)maxZoom;

ตั้งค่าซูมสูงสุดที่จะยังแสดงหมุด

- (MMMarker *)setIsClickable:(bool)isClickable;

ตั้งให้หมุดสามารถถูกคลิกได้หรือไม่

- (MMMarker *)setIsPersistent:(bool)isPersistent;

ตั้งให้หมุดสามารถถูกลบด้วยฟังก์ชั่น removeAllMarkers ได้หรือไม่


แบบฝึกหัดเรื่องการแสดงหมุดบนแผนที่

ให้ลองแสดงหมุดบนแผนที่เมื่อผู้ใช้ทำการแตะนิ้วลงบนแผนที่ และลบหมุดออกเมื่อผู้ใช้แตะลงบนหมุด

คำใบ้: นักพัฒนาสามารถรับพิกัดที่ผู้ใช้แตะบนแผนที่ผ่านทาง

- (void)mapView:(MMMapView *)mapView clickedAtLocation:(MMLocation)location {
  // This function is called when user click on the map where no marker available.
}

ดูเฉลย

Clone this wiki locally