Android Google Map : Adding Multiple Marker (Latitude, Longitude) |
Android Google Map : Adding Multiple Marker (Latitude, Longitude) ความสามารถของ Google Map API กับ Android API จะรองรับการปักหมุดหรือ Marker ได้หในหลาย ๆ จุด โดยพื้นฐานแล้วสามารถปักหมุดได้หลายตำแหน่ง เช่น หลักสิบจุด แต่มีข้อจำกัด Limit เช่นเดียวกัน เพราะใน Package ที่เป็น Free จะมีการจำกัดจำนวน Request และฟีเจอร์อื่น ๆ ไว้ ส่วนวิธีการนั้นก็เพียงเพิ่มคำสั่ง googleMap.addMarker(marker) ตามจำนวน Location ที่ประกอบด้วย Latitude และ Longitude ตามจำนวนจุดที่ต้องการ
Android Google Map : Adding Multiple Marker (Latitude, Longitude)
สำหรับตัวอย่างและ Code นี้รองรับการเขียนทั้งบนโปรแกรม Eclipse และ Android Studio
ใน AndroidManifest.xml เพิ่ม Permission ดังนี้
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
รูปแบบการ Marker Location บน Google Map ในหลายๆ ตำแหน่ง
Marker Syntax (Multiple)
// Marker 1
MarkerOptions marker1 = new MarkerOptions().position(new LatLng(Latitude1, Longitude1)).title(name1);
googleMap.addMarker(marker1);
// Marker 2
MarkerOptions marker2 = new MarkerOptions().position(new LatLng(Latitude2, Longitude2)).title(name3);
googleMap.addMarker(marker2);
..
..
ในการ Maker Location บน Google Map โดยพื้นฐานแล้วสามารถปักหมุดได้หลายตำแหน่ง แต่มีข้อจำกัด Limit เช่นเดียวกัน เพราะใน Package ที่เป็น Free จะมีการจำกัดจำนวน Request และฟีเจอร์อื่น ๆ ไว้
Example 1 : ตัวอย่างการเขียน Android App ปักหมุดหรือ Mark Location หลายตำแหน่ง
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/googleMap"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
MainActivity.java
package com.myapp;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import java.util.ArrayList;
import java.util.HashMap;
import com.google.android.gms.maps.CameraUpdateFactory;
public class MainActivity extends FragmentActivity {
// Google Map
private GoogleMap googleMap;
// Latitude & Longitude
private Double Latitude = 0.00;
private Double Longitude = 0.00;
ArrayList<HashMap<String, String>> location = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Location 1
map = new HashMap<String, String>();
map.put("LocationID", "1");
map.put("Latitude", "13.860633");
map.put("Longitude", "100.612155");
map.put("LocationName", "Ladplakao 76");
location.add(map);
// Location 2
map = new HashMap<String, String>();
map.put("LocationID", "2");
map.put("Latitude", "13.858747");
map.put("Longitude", "100.610996");
map.put("LocationName", "Ladplakao 70");
location.add(map);
// Location 3
map = new HashMap<String, String>();
map.put("LocationID", "3");
map.put("Latitude", "13.863903");
map.put("Longitude", "100.614343");
map.put("LocationName", "Ladplakao 80");
location.add(map);
// *** Display Google Map
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.googleMap)).getMap();
// *** Focus & Zoom
Latitude = Double.parseDouble(location.get(0).get("Latitude").toString());
Longitude = Double.parseDouble(location.get(0).get("Longitude").toString());
LatLng coordinate = new LatLng(Latitude, Longitude);
googleMap.setMapType(com.google.android.gms.maps.GoogleMap.MAP_TYPE_HYBRID);
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(coordinate, 17));
// *** Marker (Loop)
for (int i = 0; i < location.size(); i++) {
Latitude = Double.parseDouble(location.get(i).get("Latitude").toString());
Longitude = Double.parseDouble(location.get(i).get("Longitude").toString());
String name = location.get(i).get("LocationName").toString();
MarkerOptions marker = new MarkerOptions().position(new LatLng(Latitude, Longitude)).title(name);
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker));
googleMap.addMarker(marker);
}
}
}
จาก Code นี้จะเป็นการสร้าง Location หลาย ๆ ที่แล้วจัดเก็บลงใน ArrayList จากนั้นค่อยมา Loop เพื่อปักหมุดลงใน Google Map
Screenshot
การปักหมุดในหลาย ๆ ตำแหน่ง
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2015-11-21 22:51:15 /
2015-11-23 15:04:06 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|