[2.x] การแสดงหมุดบนแผนที่ - MetamediaTechnology/longdo-map-demo-ios GitHub Wiki
การปัดหมุด หรือ Marker เป็นฟีเจอร์ที่สำคัญสำหรับการใช้งานแผนที่ นักพัฒนาสามารถเพิ่มหมุดลงบนแผนที่ได้อย่างง่ายดายผ่านทาง Longdo Map SDK for iOS
การปักหมุดที่เก็บภาพไว้ในโปรแกรม
ให้นักพัฒนานำภาพของหมุดไปเก็บเอาไว้ใน Images.xcassets โดยควรเก็บภาพให้มีความละเอียดสำหรับทุกความละเอียดหน้าจอ ดังภาพ
จากนั้นสั้งโหลดรูปภาพ กำหนดพิกัด สร้างหมุด แล้วทำการปักหมุด ดังชุดคำสั่งด้านล่าง
UIImage *icon = [UIImage imageNamed:@"MarkerBuilding"];
MMLocation location = MMLocationMake(13.722634, 100.529313);
MMMarker *marker = [MMMarker markerWithImage:icon andLocation:location];
[_mapView addMarker:marker];
การปักหมุดจากภาพบนอินเทอร์เน็ต
เพื่อความสะดวกในการใช้งาน 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];
การลบหมุด
การลบหมุดสามารถทำผ่านได้ทางฟังก์ชั่น 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.
}