.
- Cara Menampilkan Google Map Dengan Data Alamat Di Mysql Dengan Php Windows 7
- Cara Menampilkan Google Map Dengan Data Alamat Di Mysql Dengan Php File
- Cara Menampilkan Google Map Dengan Data Alamat Di Mysql Dengan Php Pdf
Metode dan Algoritma | Menampilkan (View) Data dengan CodeIgniter Menggunakan Library Table dengan PHP dan MySQL . Anda bisa melakukan konsultasi tentang Menampilkan (View) Data dengan CodeIgniter Menggunakan Library Table dengan PHP dan MySQL melalui form di samping kanan !!!
Setelah bisa mempelajari Code Igniter untuk View Data dengan Cara Coding PHP Langsung tanpa Library, sekarang Saatnya kita belajar CodeIgniter untuk Menampilkan Data dari Database MySQL dengan Menggunakan Library Table.
Kenapa harus menggunakan library table, library database dan library-library yang lain di CodeIgniter. Karena mereka percaya bahwa halaman web akan lebih mudah dibuat, efisien, aman dan SEO Friendly dengan bantuan Library CodeIgniter :)
Kita mulai. Buat Database berikut misal database dbci, dengan table guru :
Kemudian buat folder images di direktori terluar, misalnya folder webnya xampp/htdocs/webci, maka buat folder di dalam webci sehingga menjadi webci/images, kemudian tambahkan foto, beri nama 0113234.jpg dan 06788653.jpg.
Setelah itu kita buat file model bernama mguru.php di webci/application/models/mguru.php :
Kemudian buat file controller bernama guru.php di webci/application/controllers/guru.php :
Terakhir buat file view bernama vguru.php di webci/application/views/vguru.php :
ActionScript AS3 ASP.NET AJAX C / C++ C# Clipper COBOL ColdFusion DataFlex Delphi Emacs Lisp Fortran FoxPro Java J2ME JavaScript JScript Lingo MATLAB Perl PHP PostScript Python SQL VBScript Visual Basic 6.0 Visual Basic .NET Flash MySQL Oracle Android
Related Post :
Judul: Menampilkan (View) Data dengan CodeIgniter Menggunakan Library Table dengan PHP dan MySQL
Rating: 100% based on 99998 ratings. 5 user reviews.
Ditulis Oleh hank2
Rating: 100% based on 99998 ratings. 5 user reviews.
Ditulis Oleh hank2
Anda sedang membaca artikel tentang Menampilkan (View) Data dengan CodeIgniter Menggunakan Library Table dengan PHP dan MySQL, Semoga artikel tentang Menampilkan (View) Data dengan CodeIgniter Menggunakan Library Table dengan PHP dan MySQL ini sangat bermanfaat bagi teman-teman semua, jangan lupa untuk mengunjungi lagi melalui link Menampilkan (View) Data dengan CodeIgniter Menggunakan Library Table dengan PHP dan MySQL.
Aplikasi Untuk Menampilkan Titik Koordinat Pada Google Maps v2 Dengan PHP, MySQL, JSON
Posted on Updated on
Di postingan kali ini saya akan membahas tentang google maps di android. Kebetulan kemarin ada yang bertanya tentang bagaimana menampilkan titik-titik koordinat yang sumbernya dari database. Dulu saya pernah membuat seperti ini, saat masih menggunakan google maps versi yang terdahulu. Dan implementasi di google maps yang terbaru ini agak berbeda. OK deh, kita langsung aja ke pembahasannya.
1. Silahkan buat project baru yang mengimplementasikan library google map, tutorialnya ada disini.
peta-google-map-android-1
2. Buat sebuah class baru untuk file koneksi, Koneksi.java.
1 package dlmbg.pckg.petabesakih;
2
3 public class Koneksi {
4
5 public String isi_koneksi()
6 {
7 //isi sendiri dengan alamat ip/domain
8 String isi = “http://192.168.1.12/”;
9 return isi;
10 }
11
12 }
1 package dlmbg.pckg.petabesakih;
2
3 public class Koneksi {
4
5 public String isi_koneksi()
6 {
7 //isi sendiri dengan alamat ip/domain
8 String isi = “http://192.168.1.12/”;
9 return isi;
10 }
11
12 }
3. Output data yang saya ambil, formatnya berupa JSON. Jadi disini saya menggunakan class JSONParser untuk melakukan parsing datanya.
1 package dlmbg.pckg.petabesakih;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.UnsupportedEncodingException;
8 import java.util.List;
9
10 import org.apache.http.HttpEntity;
11 import org.apache.http.HttpResponse;
12 import org.apache.http.NameValuePair;
13 import org.apache.http.client.ClientProtocolException;
14 import org.apache.http.client.entity.UrlEncodedFormEntity;
15 import org.apache.http.client.methods.HttpGet;
16 import org.apache.http.client.methods.HttpPost;
17 import org.apache.http.client.utils.URLEncodedUtils;
18 import org.apache.http.impl.client.DefaultHttpClient;
19 import org.json.JSONException;
20 import org.json.JSONObject;
21
22 import android.util.Log;
23
24 public class JSONParser {
25
26 static InputStream is = null;
27 static JSONObject jObj = null;
28 static String json = “”;
29
30 public JSONParser() {
31
32 }
33
34 public JSONObject makeHttpRequest(String url, String method,
35 List params) {
36
37 try {
38
39 if(method “POST”){
40 DefaultHttpClient httpClient = new DefaultHttpClient();
41 HttpPost httpPost = new HttpPost(url);
42 httpPost.setEntity(new UrlEncodedFormEntity(params));
43
44 HttpResponse httpResponse = httpClient.execute(httpPost);
45 HttpEntity httpEntity = httpResponse.getEntity();
46 is = httpEntity.getContent();
47
48 }else if(method “GET”){
49 DefaultHttpClient httpClient = new DefaultHttpClient();
50 String paramString = URLEncodedUtils.format(params, “utf-8”);
51 url += “?” + paramString;
52 HttpGet httpGet = new HttpGet(url);
53
54 HttpResponse httpResponse = httpClient.execute(httpGet);
55 HttpEntity httpEntity = httpResponse.getEntity();
56 is = httpEntity.getContent();
57 }
58
59 } catch (UnsupportedEncodingException e) {
60 e.printStackTrace();
61 } catch (ClientProtocolException e) {
62 e.printStackTrace();
63 } catch (IOException e) {
64 e.printStackTrace();
65 }
66
67 try {
68 BufferedReader reader = new BufferedReader(new InputStreamReader(
69 is, “iso-8859-1”), 8);
70 StringBuilder sb = new StringBuilder();
71 String line = null;
72 while ((line = reader.readLine()) != null) {
73 sb.append(line + “n”);
74 }
75 is.close();
76 json = sb.toString();
77 } catch (Exception e) {
78 Log.e(“Buffer Error”, “Error converting result ” + e.toString());
79 }
80
81 try {
82 jObj = new JSONObject(json);
83 } catch (JSONException e) {
84 Log.e(“JSON Parser”, “Error parsing data ” + e.toString());
85 }
86
87 return jObj;
88 }
89
90 public JSONObject AmbilJson(String url) {
91
92 try {
93 DefaultHttpClient httpClient = new DefaultHttpClient();
94 HttpPost httpPost = new HttpPost(url);
95
96 HttpResponse httpResponse = httpClient.execute(httpPost);
97 HttpEntity httpEntity = httpResponse.getEntity();
98 is = httpEntity.getContent();
99
100 } catch (UnsupportedEncodingException e) {
101 e.printStackTrace();
102 } catch (ClientProtocolException e) {
103 e.printStackTrace();
104 } catch (IOException e) {
105 e.printStackTrace();
106 }
107
108 try {
109 BufferedReader reader = new BufferedReader(new InputStreamReader(
110 is, “iso-8859-1”), 8);
111 StringBuilder sb = new StringBuilder();
112 String line = null;
113 while ((line = reader.readLine()) != null) {
114 sb.append(line + “n”);
115 }
116 is.close();
117 json = sb.toString();
118 } catch (Exception e) {
119 Log.e(“Buffer Error”, “Error converting result ” + e.toString());
120 }
121
122 try {
123 jObj = new JSONObject(json);
124 } catch (JSONException e) {
125 Log.e(“JSON Parser”, “Error parsing data ” + e.toString());
126 }
127
128 return jObj;
129
130 }
131 }
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.UnsupportedEncodingException;
8 import java.util.List;
9
10 import org.apache.http.HttpEntity;
11 import org.apache.http.HttpResponse;
12 import org.apache.http.NameValuePair;
13 import org.apache.http.client.ClientProtocolException;
14 import org.apache.http.client.entity.UrlEncodedFormEntity;
15 import org.apache.http.client.methods.HttpGet;
16 import org.apache.http.client.methods.HttpPost;
17 import org.apache.http.client.utils.URLEncodedUtils;
18 import org.apache.http.impl.client.DefaultHttpClient;
19 import org.json.JSONException;
20 import org.json.JSONObject;
21
22 import android.util.Log;
23
24 public class JSONParser {
25
26 static InputStream is = null;
27 static JSONObject jObj = null;
28 static String json = “”;
29
30 public JSONParser() {
31
32 }
33
34 public JSONObject makeHttpRequest(String url, String method,
35 List params) {
36
37 try {
38
39 if(method “POST”){
40 DefaultHttpClient httpClient = new DefaultHttpClient();
41 HttpPost httpPost = new HttpPost(url);
42 httpPost.setEntity(new UrlEncodedFormEntity(params));
43
44 HttpResponse httpResponse = httpClient.execute(httpPost);
45 HttpEntity httpEntity = httpResponse.getEntity();
46 is = httpEntity.getContent();
47
48 }else if(method “GET”){
49 DefaultHttpClient httpClient = new DefaultHttpClient();
50 String paramString = URLEncodedUtils.format(params, “utf-8”);
51 url += “?” + paramString;
52 HttpGet httpGet = new HttpGet(url);
53
54 HttpResponse httpResponse = httpClient.execute(httpGet);
55 HttpEntity httpEntity = httpResponse.getEntity();
56 is = httpEntity.getContent();
57 }
58
59 } catch (UnsupportedEncodingException e) {
60 e.printStackTrace();
61 } catch (ClientProtocolException e) {
62 e.printStackTrace();
63 } catch (IOException e) {
64 e.printStackTrace();
65 }
66
67 try {
68 BufferedReader reader = new BufferedReader(new InputStreamReader(
69 is, “iso-8859-1”), 8);
70 StringBuilder sb = new StringBuilder();
71 String line = null;
72 while ((line = reader.readLine()) != null) {
73 sb.append(line + “n”);
74 }
75 is.close();
76 json = sb.toString();
77 } catch (Exception e) {
78 Log.e(“Buffer Error”, “Error converting result ” + e.toString());
79 }
80
81 try {
82 jObj = new JSONObject(json);
83 } catch (JSONException e) {
84 Log.e(“JSON Parser”, “Error parsing data ” + e.toString());
85 }
86
87 return jObj;
88 }
89
90 public JSONObject AmbilJson(String url) {
91
92 try {
93 DefaultHttpClient httpClient = new DefaultHttpClient();
94 HttpPost httpPost = new HttpPost(url);
95
96 HttpResponse httpResponse = httpClient.execute(httpPost);
97 HttpEntity httpEntity = httpResponse.getEntity();
98 is = httpEntity.getContent();
99
100 } catch (UnsupportedEncodingException e) {
101 e.printStackTrace();
102 } catch (ClientProtocolException e) {
103 e.printStackTrace();
104 } catch (IOException e) {
105 e.printStackTrace();
106 }
107
108 try {
109 BufferedReader reader = new BufferedReader(new InputStreamReader(
110 is, “iso-8859-1”), 8);
111 StringBuilder sb = new StringBuilder();
112 String line = null;
113 while ((line = reader.readLine()) != null) {
114 sb.append(line + “n”);
115 }
116 is.close();
117 json = sb.toString();
118 } catch (Exception e) {
119 Log.e(“Buffer Error”, “Error converting result ” + e.toString());
120 }
121
122 try {
123 jObj = new JSONObject(json);
124 } catch (JSONException e) {
125 Log.e(“JSON Parser”, “Error parsing data ” + e.toString());
126 }
127
128 return jObj;
129
130 }
131 }
4. Selanjutnya buka file MainActivity.java. Class MainActivity mengimplementasikan abstract class OnMapLongClickListener. Copy kode di bawah ini, lumayan banyak :p
1 package dlmbg.pckg.petabesakih;
3 import java.util.ArrayList;
4 import java.util.HashMap;
5
6 import org.json.JSONArray;
7 import org.json.JSONException;
8 import org.json.JSONObject;
9
10 import android.app.Activity;
11 import android.app.FragmentManager;
12 import android.app.ProgressDialog;
13 import android.content.Intent;
14 import android.os.AsyncTask;
15 import android.os.Bundle;
16 import android.view.View;
17 import android.widget.TextView;
18
19 import com.google.android.gms.common.ConnectionResult;
20 import com.google.android.gms.common.GooglePlayServicesUtil;
21 import com.google.android.gms.maps.CameraUpdateFactory;
22 import com.google.android.gms.maps.GoogleMap;
23 import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;
24 import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
25 import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
26 import com.google.android.gms.maps.MapFragment;
27 import com.google.android.gms.maps.model.LatLng;
28 import com.google.android.gms.maps.model.Marker;
29 import com.google.android.gms.maps.model.MarkerOptions;
30
31 public class MainActivity extends Activity implements OnMapLongClickListener, OnInfoWindowClickListener{
32
33 static final LatLng AWAL = new LatLng(3.584695,98.675079);
34 ArrayList<HashMap<String, String>> dataMap = new ArrayList<HashMap<String, String>>();
35 private ProgressDialog pDialog;
36 JSONParser jParser = new JSONParser();
37 Koneksi lo_Koneksi = new Koneksi();
38 String isi = lo_Koneksi.isi_koneksi();
39 String link_url = isi + “peta.php”;
40 JSONArray str_json = null;
41
42 class MyInfoWindowAdapter implements InfoWindowAdapter{
43
44 private final View myContentsView;
45
46 MyInfoWindowAdapter(){
47 myContentsView = getLayoutInflater().inflate(R.layout.custom_info_contents, null);
48 }
49
50 @Override
51 public View getInfoContents(Marker marker) {
52 TextView tvTitle = ((TextView)myContentsView.findViewById(R.id.title));
53 tvTitle.setText(marker.getTitle());
54 TextView tvSnippet = ((TextView)myContentsView.findViewById(R.id.snippet));
55 tvSnippet.setText(marker.getSnippet());
56
57 return myContentsView;
58 }
59
60 @Override
61 public View getInfoWindow(Marker marker) {
62 return null;
63 }
64
65 }
66
67 class getListInfo extends AsyncTask<String, String, String> {
68 @Override
69 protected void onPreExecute() {
70 super.onPreExecute();
71 pDialog = new ProgressDialog(MainActivity.this);
72 pDialog.setMessage(“Menghubungkan ke server…”);
73 pDialog.setIndeterminate(false);
74 pDialog.setCancelable(true);
75 pDialog.show();
76 }
77
78 protected String doInBackground(String… args) {
79
80 JSONObject json = jParser.AmbilJson(link_url);
81
82 try {
83 str_json = json.getJSONArray(“info”);
84
85 for(int i = 0; i < str_json.length(); i++)
86 {
87 JSONObject ar = str_json.getJSONObject(i);
88 HashMap<String, String> map = new HashMap<String, String>();
89
90 map.put(“judul”, ar.getString(“judul”));
91 map.put(“koordinat_lang”, ar.getString(“koordinat_lang”));
92 map.put(“koordinat_lat”, ar.getString(“koordinat_lat”));
93 map.put(“keterangan”, ar.getString(“keterangan”));
94
95 dataMap.add(map);
96 }
97 } catch (JSONException e) {
98 e.printStackTrace();
99 }
100
101 return null;
102 }
103
104 protected void onPostExecute(String file_url) {
105 pDialog.dismiss();
106 runOnUiThread(new Runnable() {
107 public void run() {
108
109 for (int i = 0; i < dataMap.size(); i++)
110 {
111 HashMap<String, String> map = new HashMap<String, String>();
112 map = dataMap.get(i);
113 LatLng POSISI = new LatLng(Double.parseDouble(map.get(“koordinat_lat”)),Double.parseDouble(map.get(“koordinat_lang”)));
114
115 myMap.addMarker(new MarkerOptions()
116 .position(POSISI)
117 .title(map.get(“judul”))
118 .snippet(map.get(“keterangan”)));
119
120 }
121 }
122 });
123 }
124
125 }
126
127 final int RQS_GooglePlayServices = 1;
128 private GoogleMap myMap;
129 TextView tvLocInfo;
130
131 @Override
132 protected void onCreate(Bundle savedInstanceState) {
133 super.onCreate(savedInstanceState);
134 setContentView(R.layout.peta_online);
135
136 FragmentManager myFragmentManager = getFragmentManager();
137 MapFragment myMapFragment
138 = (MapFragment)myFragmentManager.findFragmentById(R.id.map);
139 myMap = myMapFragment.getMap();
140
141 myMap.setMyLocationEnabled(true);
142
143 myMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
144
145 myMap.getUiSettings().setZoomControlsEnabled(true);
146 myMap.getUiSettings().setCompassEnabled(true);
147 myMap.getUiSettings().setMyLocationButtonEnabled(true);
148
149 myMap.getUiSettings().setAllGesturesEnabled(true);
150
151 myMap.setTrafficEnabled(true);
152
153 myMap.setOnMapLongClickListener(this);
154 myMap.setInfoWindowAdapter(new MyInfoWindowAdapter());
155 myMap.setOnInfoWindowClickListener(this);
156
157 myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(AWAL, 15));
158
159 myMap.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
160
161 new getListInfo().execute();
162
163 }
164
165 @Override
166 protected void onResume() {
167 super.onResume();
168
169 int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
170
171 if (resultCode != ConnectionResult.SUCCESS)
172 {
173 GooglePlayServicesUtil.getErrorDialog(resultCode, this, RQS_GooglePlayServices);
174 }
175 }
176
177 @Override
178 public void onMapLongClick(LatLng point) {
179
180 }
181
182 @Override
183 public void onInfoWindowClick(Marker marker) {
184 Intent intent = new Intent(this, DetailPeta.class);
185
186 String replace_string_first = marker.getTitle().replace(” “, “_”);
187 intent.putExtra(“judul”, replace_string_first);
188 startActivity(intent);
189
190 }
191
192 }
3 import java.util.ArrayList;
4 import java.util.HashMap;
5
6 import org.json.JSONArray;
7 import org.json.JSONException;
8 import org.json.JSONObject;
9
10 import android.app.Activity;
11 import android.app.FragmentManager;
12 import android.app.ProgressDialog;
13 import android.content.Intent;
14 import android.os.AsyncTask;
15 import android.os.Bundle;
16 import android.view.View;
17 import android.widget.TextView;
18
19 import com.google.android.gms.common.ConnectionResult;
20 import com.google.android.gms.common.GooglePlayServicesUtil;
21 import com.google.android.gms.maps.CameraUpdateFactory;
22 import com.google.android.gms.maps.GoogleMap;
23 import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;
24 import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
25 import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
26 import com.google.android.gms.maps.MapFragment;
27 import com.google.android.gms.maps.model.LatLng;
28 import com.google.android.gms.maps.model.Marker;
29 import com.google.android.gms.maps.model.MarkerOptions;
30
31 public class MainActivity extends Activity implements OnMapLongClickListener, OnInfoWindowClickListener{
32
33 static final LatLng AWAL = new LatLng(3.584695,98.675079);
34 ArrayList<HashMap<String, String>> dataMap = new ArrayList<HashMap<String, String>>();
35 private ProgressDialog pDialog;
36 JSONParser jParser = new JSONParser();
37 Koneksi lo_Koneksi = new Koneksi();
38 String isi = lo_Koneksi.isi_koneksi();
39 String link_url = isi + “peta.php”;
40 JSONArray str_json = null;
41
42 class MyInfoWindowAdapter implements InfoWindowAdapter{
43
44 private final View myContentsView;
45
46 MyInfoWindowAdapter(){
47 myContentsView = getLayoutInflater().inflate(R.layout.custom_info_contents, null);
48 }
49
50 @Override
51 public View getInfoContents(Marker marker) {
52 TextView tvTitle = ((TextView)myContentsView.findViewById(R.id.title));
53 tvTitle.setText(marker.getTitle());
54 TextView tvSnippet = ((TextView)myContentsView.findViewById(R.id.snippet));
55 tvSnippet.setText(marker.getSnippet());
56
57 return myContentsView;
58 }
59
60 @Override
61 public View getInfoWindow(Marker marker) {
62 return null;
63 }
64
65 }
66
67 class getListInfo extends AsyncTask<String, String, String> {
68 @Override
69 protected void onPreExecute() {
70 super.onPreExecute();
71 pDialog = new ProgressDialog(MainActivity.this);
72 pDialog.setMessage(“Menghubungkan ke server…”);
73 pDialog.setIndeterminate(false);
74 pDialog.setCancelable(true);
75 pDialog.show();
76 }
77
78 protected String doInBackground(String… args) {
79
80 JSONObject json = jParser.AmbilJson(link_url);
81
82 try {
83 str_json = json.getJSONArray(“info”);
84
85 for(int i = 0; i < str_json.length(); i++)
86 {
87 JSONObject ar = str_json.getJSONObject(i);
88 HashMap<String, String> map = new HashMap<String, String>();
89
90 map.put(“judul”, ar.getString(“judul”));
91 map.put(“koordinat_lang”, ar.getString(“koordinat_lang”));
92 map.put(“koordinat_lat”, ar.getString(“koordinat_lat”));
93 map.put(“keterangan”, ar.getString(“keterangan”));
94
95 dataMap.add(map);
96 }
97 } catch (JSONException e) {
98 e.printStackTrace();
99 }
100
101 return null;
102 }
103
104 protected void onPostExecute(String file_url) {
105 pDialog.dismiss();
106 runOnUiThread(new Runnable() {
107 public void run() {
108
109 for (int i = 0; i < dataMap.size(); i++)
110 {
111 HashMap<String, String> map = new HashMap<String, String>();
112 map = dataMap.get(i);
113 LatLng POSISI = new LatLng(Double.parseDouble(map.get(“koordinat_lat”)),Double.parseDouble(map.get(“koordinat_lang”)));
114
115 myMap.addMarker(new MarkerOptions()
116 .position(POSISI)
117 .title(map.get(“judul”))
118 .snippet(map.get(“keterangan”)));
119
120 }
121 }
122 });
123 }
124
125 }
126
127 final int RQS_GooglePlayServices = 1;
128 private GoogleMap myMap;
129 TextView tvLocInfo;
130
131 @Override
132 protected void onCreate(Bundle savedInstanceState) {
133 super.onCreate(savedInstanceState);
134 setContentView(R.layout.peta_online);
135
136 FragmentManager myFragmentManager = getFragmentManager();
137 MapFragment myMapFragment
138 = (MapFragment)myFragmentManager.findFragmentById(R.id.map);
139 myMap = myMapFragment.getMap();
140
141 myMap.setMyLocationEnabled(true);
142
143 myMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
144
145 myMap.getUiSettings().setZoomControlsEnabled(true);
146 myMap.getUiSettings().setCompassEnabled(true);
147 myMap.getUiSettings().setMyLocationButtonEnabled(true);
148
149 myMap.getUiSettings().setAllGesturesEnabled(true);
150
151 myMap.setTrafficEnabled(true);
152
153 myMap.setOnMapLongClickListener(this);
154 myMap.setInfoWindowAdapter(new MyInfoWindowAdapter());
155 myMap.setOnInfoWindowClickListener(this);
156
157 myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(AWAL, 15));
158
159 myMap.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
160
161 new getListInfo().execute();
162
163 }
164
165 @Override
166 protected void onResume() {
167 super.onResume();
168
169 int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
170
171 if (resultCode != ConnectionResult.SUCCESS)
172 {
173 GooglePlayServicesUtil.getErrorDialog(resultCode, this, RQS_GooglePlayServices);
174 }
175 }
176
177 @Override
178 public void onMapLongClick(LatLng point) {
179
180 }
181
182 @Override
183 public void onInfoWindowClick(Marker marker) {
184 Intent intent = new Intent(this, DetailPeta.class);
185
186 String replace_string_first = marker.getTitle().replace(” “, “_”);
187 intent.putExtra(“judul”, replace_string_first);
188 startActivity(intent);
189
190 }
191
192 }
5. Ketika marker muncul di peta dan kemudian di-tap, maka akan muncul keterangannya. Dan ketika keterangannya di-tap, maka akan muncul keterangan selengkapnya beserta gambarnya.
1 package dlmbg.pckg.petabesakih;
2
3 import java.io.BufferedInputStream;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.net.URL;
7 import java.net.URLConnection;
8 import java.util.ArrayList;
9 import java.util.HashMap;
10
11 import org.json.JSONArray;
12 import org.json.JSONException;
13 import org.json.JSONObject;
14
15 import android.app.Activity;
16 import android.app.ProgressDialog;
17 import android.graphics.Bitmap;
18 import android.graphics.BitmapFactory;
19 import android.os.AsyncTask;
20 import android.os.Bundle;
21 import android.util.Log;
22 import android.widget.ImageView;
23 import android.widget.TextView;
24
25 public class DetailPeta extends Activity {
26
27 ArrayList<HashMap<String, String>> dataMap = new ArrayList<HashMap<String, String>>();
28 private ProgressDialog pDialog;
29 JSONParser jParser = new JSONParser();
30 String link_url = “”;
31 JSONArray str_json = null;
32 Koneksi lo_Koneksi = new Koneksi();
33 String isi = lo_Koneksi.isi_koneksi();
34
35 TextView judul_set, keterangan_set;
36 ImageView gambar_set;
37
38 protected void onCreate(Bundle savedInstanceState) {
39 super.onCreate(savedInstanceState);
40 setContentView(R.layout.detail_peta);
41
42 keterangan_set = (TextView) findViewById(R.id.keterangan);
43 judul_set = (TextView) findViewById(R.id.judul);
44 gambar_set = (ImageView) findViewById(R.id.gambar);
45
46 Bundle b = getIntent().getExtras();
47 String judul = b.getString(“judul”);
48
49 link_url = isi + “detail.php?judul=”+judul;
50 new getListInfo().execute();
51 }
52
53 class getListInfo extends AsyncTask<String, String, String> {
54 @Override
55 protected void onPreExecute() {
56 super.onPreExecute();
57 pDialog = new ProgressDialog(DetailPeta.this);
58 pDialog.setMessage(“Menghubungkan ke server…”);
59 pDialog.setIndeterminate(false);
60 pDialog.setCancelable(true);
61 pDialog.show();
62 }
63
64 protected String doInBackground(String… args) {
65
66 JSONObject json = jParser.AmbilJson(link_url);
67
68 try {
69 str_json = json.getJSONArray(“info”);
70
71 for(int i = 0; i < str_json.length(); i++)
72 {
73 JSONObject ar = str_json.getJSONObject(i);
74 HashMap<String, String> map = new HashMap<String, String>();
75
76 map.put(“judul”, ar.getString(“judul”));
77 map.put(“koordinat_lang”, ar.getString(“koordinat_lang”));
78 map.put(“koordinat_lat”, ar.getString(“koordinat_lat”));
79 map.put(“keterangan”, ar.getString(“keterangan”));
80 map.put(“gambar”, ar.getString(“gambar”));
81
82 dataMap.add(map);
83 }
84 } catch (JSONException e) {
85 e.printStackTrace();
86 }
87
88 return null;
89 }
90
91 protected void onPostExecute(String file_url) {
92 pDialog.dismiss();
93 runOnUiThread(new Runnable() {
94 public void run() {
95
96 for (int i = 0; i < dataMap.size(); i++)
97 {
98 HashMap<String, String> map = new HashMap<String, String>();
99 map = dataMap.get(i);
100 judul_set.setText(map.get(“judul”));
101 keterangan_set.setText(map.get(“keterangan”));
102
103 new DownloadImagesTask().execute(isi+”gambar/”+map.get(“gambar”));
104 }
105 }
106 });
107 }
108
109 }
110 public class DownloadImagesTask extends AsyncTask<String, Void, Bitmap> {
111
112 @Override
113 protected Bitmap doInBackground(String… urls) {
114 return download_Image(urls[0]);
115 }
116
117 @Override
118 protected void onPostExecute(Bitmap result) {
119 gambar_set.setImageBitmap(result);
120 }
121
122 private Bitmap download_Image(String url) {
123 Bitmap bm = null;
124 try {
125 URL aURL = new URL(url);
126 URLConnection conn = aURL.openConnection();
127 conn.connect();
128 InputStream is = conn.getInputStream();
129 BufferedInputStream bis = new BufferedInputStream(is);
130 bm = BitmapFactory.decodeStream(bis);
131 bis.close();
132 is.close();
133 } catch (IOException e) {
134 Log.e(“Hub”,”Error getting the image from server : ” + e.getMessage().toString());
135 }
136 return bm;
137 }
138 }
139 }
2
3 import java.io.BufferedInputStream;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.net.URL;
7 import java.net.URLConnection;
8 import java.util.ArrayList;
9 import java.util.HashMap;
10
11 import org.json.JSONArray;
12 import org.json.JSONException;
13 import org.json.JSONObject;
14
15 import android.app.Activity;
16 import android.app.ProgressDialog;
17 import android.graphics.Bitmap;
18 import android.graphics.BitmapFactory;
19 import android.os.AsyncTask;
20 import android.os.Bundle;
21 import android.util.Log;
22 import android.widget.ImageView;
23 import android.widget.TextView;
24
25 public class DetailPeta extends Activity {
26
27 ArrayList<HashMap<String, String>> dataMap = new ArrayList<HashMap<String, String>>();
28 private ProgressDialog pDialog;
29 JSONParser jParser = new JSONParser();
30 String link_url = “”;
31 JSONArray str_json = null;
32 Koneksi lo_Koneksi = new Koneksi();
33 String isi = lo_Koneksi.isi_koneksi();
34
35 TextView judul_set, keterangan_set;
36 ImageView gambar_set;
37
38 protected void onCreate(Bundle savedInstanceState) {
39 super.onCreate(savedInstanceState);
40 setContentView(R.layout.detail_peta);
41
42 keterangan_set = (TextView) findViewById(R.id.keterangan);
43 judul_set = (TextView) findViewById(R.id.judul);
44 gambar_set = (ImageView) findViewById(R.id.gambar);
45
46 Bundle b = getIntent().getExtras();
47 String judul = b.getString(“judul”);
48
49 link_url = isi + “detail.php?judul=”+judul;
50 new getListInfo().execute();
51 }
52
53 class getListInfo extends AsyncTask<String, String, String> {
54 @Override
55 protected void onPreExecute() {
56 super.onPreExecute();
57 pDialog = new ProgressDialog(DetailPeta.this);
58 pDialog.setMessage(“Menghubungkan ke server…”);
59 pDialog.setIndeterminate(false);
60 pDialog.setCancelable(true);
61 pDialog.show();
62 }
63
64 protected String doInBackground(String… args) {
65
66 JSONObject json = jParser.AmbilJson(link_url);
67
68 try {
69 str_json = json.getJSONArray(“info”);
70
71 for(int i = 0; i < str_json.length(); i++)
72 {
73 JSONObject ar = str_json.getJSONObject(i);
74 HashMap<String, String> map = new HashMap<String, String>();
75
76 map.put(“judul”, ar.getString(“judul”));
77 map.put(“koordinat_lang”, ar.getString(“koordinat_lang”));
78 map.put(“koordinat_lat”, ar.getString(“koordinat_lat”));
79 map.put(“keterangan”, ar.getString(“keterangan”));
80 map.put(“gambar”, ar.getString(“gambar”));
81
82 dataMap.add(map);
83 }
84 } catch (JSONException e) {
85 e.printStackTrace();
86 }
87
88 return null;
89 }
90
91 protected void onPostExecute(String file_url) {
92 pDialog.dismiss();
93 runOnUiThread(new Runnable() {
94 public void run() {
95
96 for (int i = 0; i < dataMap.size(); i++)
97 {
98 HashMap<String, String> map = new HashMap<String, String>();
99 map = dataMap.get(i);
100 judul_set.setText(map.get(“judul”));
101 keterangan_set.setText(map.get(“keterangan”));
102
103 new DownloadImagesTask().execute(isi+”gambar/”+map.get(“gambar”));
104 }
105 }
106 });
107 }
108
109 }
110 public class DownloadImagesTask extends AsyncTask<String, Void, Bitmap> {
111
112 @Override
113 protected Bitmap doInBackground(String… urls) {
114 return download_Image(urls[0]);
115 }
116
117 @Override
118 protected void onPostExecute(Bitmap result) {
119 gambar_set.setImageBitmap(result);
120 }
121
122 private Bitmap download_Image(String url) {
123 Bitmap bm = null;
124 try {
125 URL aURL = new URL(url);
126 URLConnection conn = aURL.openConnection();
127 conn.connect();
128 InputStream is = conn.getInputStream();
129 BufferedInputStream bis = new BufferedInputStream(is);
130 bm = BitmapFactory.decodeStream(bis);
131 bis.close();
132 is.close();
133 } catch (IOException e) {
134 Log.e(“Hub”,”Error getting the image from server : ” + e.getMessage().toString());
135 }
136 return bm;
137 }
138 }
139 }
6. Selanjutnya kita buat 3 file layout xml untuk aplikasi peta sederhana ini :
peta_online.xml
detail_peta.xml
custom_info_contents.xml
detail_peta.xml
custom_info_contents.xml
7. Sekarang kita beralih ke pembuatan database dan tabelnya, saya buat tabel yang sederhana saja.
1 CREATE TABLE `dlmbg_sitemap` (
2 `nomor` int(5) NOT NULL auto_increment,
3 `nama` varchar(100) NOT NULL,
4 `jenis` varchar(100) NOT NULL,
5 `deskripsi` tinytext NOT NULL,
6 `lat` double NOT NULL,
7 `lng` double NOT NULL,
8 PRIMARY KEY (`nomor`)
9 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
2 `nomor` int(5) NOT NULL auto_increment,
3 `nama` varchar(100) NOT NULL,
4 `jenis` varchar(100) NOT NULL,
5 `deskripsi` tinytext NOT NULL,
6 `lat` double NOT NULL,
7 `lng` double NOT NULL,
8 PRIMARY KEY (`nomor`)
9 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
8. Sekarang kita memanfaatkan PHP untuk mengambil data dari database MySQL. Disini saya menggunakan koneksi PDO.
koneksi.php
1 setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
6
7 } catch (PDOException $e) {
8 echo “Terjadi error.”;
9 echo $e->getMessage();
10 }
11
12 ?>
6
7 } catch (PDOException $e) {
8 echo “Terjadi error.”;
9 echo $e->getMessage();
10 }
11
12 ?>
peta.php
1 prepare($kueri);
6 $STH->execute();
7
8 while($data = $STH->fetch())
9 {
10 $arr[] = $data;
11 }
12
13 echo ‘{“info”:’. json_encode($arr).’}’;
14 ?>
6 $STH->execute();
7
8 while($data = $STH->fetch())
9 {
10 $arr[] = $data;
11 }
12
13 echo ‘{“info”:’. json_encode($arr).’}’;
14 ?>
9. Langsung coba ke dalam emulator atau debug langsung ke hape android, dan hasilnya seperti di bawah ini :
shot_000038shot_000040
Hehe, lumayan panjang juga yaw. Menurut saya lebih mudah menampilkan koordinat di google maps V2 ini. Karena sudah banyak class-class yang disediakan dan siap diimplementasikan. OK deh, sekian dulu postingan saya kali ini. Semoga kita bisa menjadi lebih baik untuk ke depannya :).
“Stay Foolish, Stay Hungry”
Cheerrrss….langsung aja download source code nya di bawah ini…. Download Aplikasi
Catatan ini dikutip dari Google Developer (2009) yang merupakan langkah dasar untuk membangun sebuah aplikasi maps yang generate melalui bahasa pemrograman PHP dan Mysql.
Membangun Tabel Lokasi
Ketika kita membangun sebuah table di dalam Mysql yang ditujukan untuk pengembangan Google maps aplication kita harus memperhatikan beberapa aspek yakni dengen menyediakan kolom lat (latitude dalam bahasa indonesia berarti garis lintang) dan long (longitude berarti garis bujur), kita dapat menspesifikasikan atribut tersebut sebagai float dengan ukuran (10,6). Itu berarti terdapat angka sebanyak 6 digit setelah desimal (tanda titik digunakan sebagai pengganti koma). Dan maksimal 4 digit sebelum desimal sebagai contoh -123.456789 derajat. Tabel tersebut juga harus memiliki idsebagai atribut yang didefinisikan sebagai primary key, dan juga atribut yang digunakan untuk menjelaskan tipe atau jenis tempat sebagai contoh restoran dan bar. Berikut adalah tampilan database melalui antarmuka yang terdapat dalam PhpMyadmin sebagimana tanpak pada gambar 2.5 ,
Gambar Membuat Tabel Dengan Menentukan parameter atribut (developer.google.com,2007)
Jika tidak memiliki akses pada phpMyadmin maka dapat menggunakan script berikut pada mysql commands,
CREATE TABLE `markers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 60 ) NOT NULL ,
`address` VARCHAR( 80 ) NOT NULL ,
`lat` FLOAT( 10, 6 ) NOT NULL ,
`lng` FLOAT( 10, 6 ) NOT NULL ,
`type` VARCHAR( 30 ) NOT NULL
) ENGINE = MYISAM ;
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 60 ) NOT NULL ,
`address` VARCHAR( 80 ) NOT NULL ,
`lat` FLOAT( 10, 6 ) NOT NULL ,
`lng` FLOAT( 10, 6 ) NOT NULL ,
`type` VARCHAR( 30 ) NOT NULL
) ENGINE = MYISAM ;
Mengisi Data Kedalam Tabel
Setelah membuat tabel ,maka waktunya untuk mengisinya dengan data. Berikut adalah 10 sample data tempat di Seatlle yang telah tersedia dibawah ini kita dapat mengimport kedalam tabel dengan beberapa jenis format, termasuk dengan menggunakan CSV(comma-sparated values). Microsoft Excel dan google Spreedsheet adalah salah satu aplikasi yang dapat melakukan eksport kedalam format CSV, sehingga akan lebih mudah melakukan exporting dan importing dari data dalam spreedsheets kedalam Mysql melalui format CSV.
Pan Africa Market,'1521 1st Ave, Seattle, WA', 47.608941,-122.340145,restaurant
Buddha Thai & Bar,'2222 2nd Ave, Seattle, WA', 47.613591,-122.344394,bar
The Melting Pot,'14 Mercer St, Seattle, WA', 47.624562,-122.356442,restaurant
Ipanema Grill,'1225 1st Ave, Seattle, WA', 47.606366,-122.337656,restaurant
Sake House,'2230 1st Ave, Seattle, WA', 47.612825,-122.34567,bar
Crab Pot,'1301 Alaskan Way, Seattle, WA', 47.605961,-122.34036,restaurant
Mama's Mexican Kitchen,'2234 2nd Ave, Seattle, WA', 47.613975,-122.345467,bar
Wingdome,'1416 E Olive Way, Seattle, WA', 47.617215,-122.326584,bar
Piroshky Piroshky,'1908 Pike pl, Seattle, WA', 47.610127,-122.342838,restaurant
Berikut adalah gambar mengenai cara mengimport csv kedalam Mysql:
Gambar Proses Import File CSV kedalam Mysql (developer.google.com,2007)
Jika tidak memiliki fasilitas phpMyadmin maka dapat menggunakan script berikut pada SQL Commands,
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`) VALUES ('Pan Africa Market', '1521 1st Ave, Seattle, WA', '47.608941', '-122.340145', 'restaurant');INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`) VALUES ('Buddha Thai & Bar', '2222 2nd Ave, Seattle, WA', '47.613591', '-122.344394', 'bar');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`) VALUES ('The Melting Pot', '14 Mercer St, Seattle, WA', '47.624562', '-122.356442', 'restaurant');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`) VALUES ('Ipanema Grill', '1225 1st Ave, Seattle, WA', '47.606366', '-122.337656', 'restaurant');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`) VALUES ('Sake House', '2230 1st Ave, Seattle, WA', '47.612825', '-122.34567', 'bar');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`) VALUES ('Crab Pot', '1301 Alaskan Way, Seattle, WA', '47.605961', '-122.34036', 'restaurant');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`) VALUES ('Mama's Mexican Kitchen', '2234 2nd Ave, Seattle, WA', '47.613975', '-122.345467', 'bar');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`) VALUES ('Wingdome', '1416 E Olive Way, Seattle, WA', '47.617215', '-122.326584', 'bar');
INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`) VALUES ('Piroshky Piroshky', '1908 Pike pl, Seattle, WA', '47.610127', '-122.342838', 'restaurant');
Memproduksi Script XML dari PHP
Pada titik ini kita harus membuat tabel marker yang berisi sample data. dan menulis beberapa stament PHP untuk mengexport data dalam tabel MySQL kedalam XML yang dapat dipanggil melalui asynchronous javascript dikenal sebagai AJAX. (Google Developer, 2013).
Pertama kita harus memasukan script berisi informasi koneksi kedalam file terpisah, hal ini pada umunya dilakukan untuk menjaga kerahasiaan informasi yang tidak ingin dibagikan.berikut contohnya:
Pertama kita harus memasukan script berisi informasi koneksi kedalam file terpisah, hal ini pada umunya dilakukan untuk menjaga kerahasiaan informasi yang tidak ingin dibagikan.berikut contohnya:
<?
$username='username';
$password='password';
$database='username-databaseName';
?>
Proses parsing Mysql dengan menggunakan Echo pada PHP$username='username';
$password='password';
$database='username-databaseName';
?>
Ketika menggunakan fungsi echo dalam melakukan conversi data dari Mysql ke XML , anda membutuhkan sebuah function yang berfungsi untuk mengencode beberapa special entities karakter seperti (<,>,”,’) agar lebih bersahabat dengan XML.
Dalam PHP, ketika pertama kali melakukan koneksi kedalam database maka kita akan mengeksekusi sebuah statmen SELECT * (‘*’ bermakna memilih semua) query yang berada dalam tabel marker . lalu mencetak (echo out) parent node marker kedalam XML, dan mengulangi sisanya sehingga semua baris dieksekusi. Untuk setiap baris didalam tabel (setiap lokasi), kita membutuhkan sebuah function untuk melakukan parsing terhadap setiap special entities seperti yang terdapat pada alamat lokasi dan menutupnya dengan menggunakan tag marker (Google Developer, 2013).Script php yang dimaksudkan adalah seperti berikut (phpsqlajax_genxml.php):
<?php
require('phpsqlajax_dbinfo.php');
function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','<',$htmlStr);
$xmlStr=str_replace('>','>',$xmlStr);
$xmlStr=str_replace('','"',$xmlStr);
$xmlStr=str_replace('',''',$xmlStr);
$xmlStr=str_replace('&','&',$xmlStr);
return $xmlStr;
}
// Membuka koneksi
$connection=mysql_connect (localhost, $username, $password);
if (!$connection) {
die('Not connected : ' . mysql_error());
}
// Set database yang aktif
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can't use db : ' . mysql_error());
}
// Memilih semua baris pada tabel marker
$query = 'SELECT * FROM markers WHERE 1';
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header('Content-type: text/xml');
// Memulai XML dengan mencetak parent marker
echo '<markers>';
// Melakukan pengulangan untuk setiap node dibawah parent marker
while ($row = @mysql_fetch_assoc($result)){
// Menambahkan kedalam XML
echo '<marker ';
echo 'name=' . parseToXML($row['name']) . ' ';
echo 'address=' . parseToXML($row['address']) . ' ';
echo 'lat=' . $row['lat'] . ' ';
echo 'lng=' . $row['lng'] . ' ';
echo 'type=' . $row['type'] . ' ';
echo '/>';
}
// End XML
echo '</markers>';
?>
require('phpsqlajax_dbinfo.php');
function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','<',$htmlStr);
$xmlStr=str_replace('>','>',$xmlStr);
$xmlStr=str_replace('','"',$xmlStr);
$xmlStr=str_replace('',''',$xmlStr);
$xmlStr=str_replace('&','&',$xmlStr);
return $xmlStr;
}
// Membuka koneksi
$connection=mysql_connect (localhost, $username, $password);
if (!$connection) {
die('Not connected : ' . mysql_error());
}
// Set database yang aktif
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can't use db : ' . mysql_error());
}
// Memilih semua baris pada tabel marker
$query = 'SELECT * FROM markers WHERE 1';
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header('Content-type: text/xml');
// Memulai XML dengan mencetak parent marker
echo '<markers>';
// Melakukan pengulangan untuk setiap node dibawah parent marker
while ($row = @mysql_fetch_assoc($result)){
// Menambahkan kedalam XML
echo '<marker ';
echo 'name=' . parseToXML($row['name']) . ' ';
echo 'address=' . parseToXML($row['address']) . ' ';
echo 'lat=' . $row['lat'] . ' ';
echo 'lng=' . $row['lng'] . ' ';
echo 'type=' . $row['type'] . ' ';
echo '/>';
}
// End XML
echo '</markers>';
?>
Mengecek XML yang Dihasilkan
Panggil file phpsqlajax_genxml.php kedalam broswer untuk mengecek apakah hasil parsing sudah valid. berikut adalah merupakan hasil cetak XML yang valid .
Panggil file phpsqlajax_genxml.php kedalam broswer untuk mengecek apakah hasil parsing sudah valid. berikut adalah merupakan hasil cetak XML yang valid .
<markers>
<marker name='Pan Africa Market' address='1521 1st Ave, Seattle, WA' lat='47.608940' lng='-122.340141' type='restaurant'/>
<marker name='Buddha Thai & Bar' address='2222 2nd Ave, Seattle, WA' lat='47.613590' lng='-122.344391' type='bar'/>
<marker name='The Melting Pot' address='14 Mercer St, Seattle, WA' lat='47.624561' lng='-122.356445' type='restaurant'/>
<marker name='Ipanema Grill' address='1225 1st Ave, Seattle, WA' lat='47.606365' lng='-122.337654' type='restaurant'/>
<marker name='Sake House' address='2230 1st Ave, Seattle, WA' lat='47.612823' lng='-122.345673' type='bar'/>
<marker name='Crab Pot' address='1301 Alaskan Way, Seattle, WA' lat='47.605961' lng='-122.340363' type='restaurant'/>
<marker name='Mama's Mexican Kitchen' address='2234 2nd Ave, Seattle, WA' lat='47.613976' lng='-122.345467' type='bar'/>
<marker name='Wingdome' address='1416 E Olive Way, Seattle, WA' lat='47.617214' lng='-122.326584' type='bar'/>
<marker name='Piroshky Piroshky' address='1908 Pike pl, Seattle, WA' lat='47.610126' lng='-122.342834' type='restaurant'/>
</markers>
Membangun Maps
Ketika hasil XML valid dan bekerja, maka langkah selanjutnya adalah membuat maps dengan menggunakan javascript sesuai dengan keperluan user. Dibawah ini adalah contoh script berikut hasilnya :
Ketika hasil XML valid dan bekerja, maka langkah selanjutnya adalah membuat maps dengan menggunakan javascript sesuai dengan keperluan user. Dibawah ini adalah contoh script berikut hasilnya :
<!DOCTYPE html >
<head>
<meta name='viewport' />
<meta http-equiv='content-type'/>
<title>PHP/MySQL & Google Maps Example</title>
<script type='text/javascript' src='http://maps.googleapis.com/maps/api/js?sensor=false'></script>
<script type='text/javascript'>
//<![CDATA[
var customIcons = {
restaurant: {
icon: 'http://labs.google.com/ridefinder/images/mm_20_blue.png',
shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'
},
bar: {
icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png',
shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'
}
};
function load() {
var map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(47.6145, -122.3418),
zoom: 13,
mapTypeId: 'roadmap'
});
var infoWindow = new google.maps.InfoWindow;
Cara Menampilkan Google Map Dengan Data Alamat Di Mysql Dengan Php Windows 7
// Rubah nama ini sesuai sengan script php yg menghasilkan script XMLdownloadUrl('phpsqlajax_genxml.php', function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName('marker');
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute('name');
var address = markers[i].getAttribute('address');
var type = markers[i].getAttribute('type');
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute('lat')),
parseFloat(markers[i].getAttribute('lng')));
var html = '<b>' + name + '</b> <br/>' + address;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
bindInfoWindow(marker, map, infoWindow, html);
}
});
}
function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(map, marker);
});
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing() {}
//]]>
</script>
</head>
<body onload='load()'>
<div></div>
</body>
</html>
Aplikasi Untuk Menampilkan Titik Koordinat Pada Google Maps v2 Dengan PHP, MySQL, JSON
Posted on Updated on
Di postingan kali ini saya akan membahas tentang google maps di android. Kebetulan kemarin ada yang bertanya tentang bagaimana menampilkan titik-titik koordinat yang sumbernya dari database. Dulu saya pernah membuat seperti ini, saat masih menggunakan google maps versi yang terdahulu. Dan implementasi di google maps yang terbaru ini agak berbeda. OK deh, kita langsung aja ke pembahasannya.
1. Silahkan buat project baru yang mengimplementasikan library google map, tutorialnya ada disini.
peta-google-map-android-1
Cara Menampilkan Google Map Dengan Data Alamat Di Mysql Dengan Php File
2. Buat sebuah class baru untuk file koneksi, Koneksi.java.
1 package dlmbg.pckg.petabesakih;
2
3 public class Koneksi {
4
5 public String isi_koneksi()
6 {
7 //isi sendiri dengan alamat ip/domain
8 String isi = “http://192.168.1.12/”;
9 return isi;
10 }
11
12 }
1 package dlmbg.pckg.petabesakih;
2
3 public class Koneksi {
4
5 public String isi_koneksi()
6 {
7 //isi sendiri dengan alamat ip/domain
8 String isi = “http://192.168.1.12/”;
9 return isi;
10 }
11
12 }
3. Output data yang saya ambil, formatnya berupa JSON. Jadi disini saya menggunakan class JSONParser untuk melakukan parsing datanya.
1 package dlmbg.pckg.petabesakih;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.UnsupportedEncodingException;
8 import java.util.List;
9
10 import org.apache.http.HttpEntity;
11 import org.apache.http.HttpResponse;
12 import org.apache.http.NameValuePair;
13 import org.apache.http.client.ClientProtocolException;
14 import org.apache.http.client.entity.UrlEncodedFormEntity;
15 import org.apache.http.client.methods.HttpGet;
16 import org.apache.http.client.methods.HttpPost;
17 import org.apache.http.client.utils.URLEncodedUtils;
18 import org.apache.http.impl.client.DefaultHttpClient;
19 import org.json.JSONException;
20 import org.json.JSONObject;
21
22 import android.util.Log;
23
24 public class JSONParser {
25
26 static InputStream is = null;
27 static JSONObject jObj = null;
28 static String json = “”;
29
30 public JSONParser() {
31
32 }
33
34 public JSONObject makeHttpRequest(String url, String method,
35 List params) {
36
37 try {
38
39 if(method “POST”){
40 DefaultHttpClient httpClient = new DefaultHttpClient();
41 HttpPost httpPost = new HttpPost(url);
42 httpPost.setEntity(new UrlEncodedFormEntity(params));
43
44 HttpResponse httpResponse = httpClient.execute(httpPost);
45 HttpEntity httpEntity = httpResponse.getEntity();
46 is = httpEntity.getContent();
47
48 }else if(method “GET”){
49 DefaultHttpClient httpClient = new DefaultHttpClient();
50 String paramString = URLEncodedUtils.format(params, “utf-8”);
51 url += “?” + paramString;
52 HttpGet httpGet = new HttpGet(url);
53
54 HttpResponse httpResponse = httpClient.execute(httpGet);
55 HttpEntity httpEntity = httpResponse.getEntity();
56 is = httpEntity.getContent();
57 }
58
59 } catch (UnsupportedEncodingException e) {
60 e.printStackTrace();
61 } catch (ClientProtocolException e) {
62 e.printStackTrace();
63 } catch (IOException e) {
64 e.printStackTrace();
65 }
66
67 try {
68 BufferedReader reader = new BufferedReader(new InputStreamReader(
69 is, “iso-8859-1”), 8);
70 StringBuilder sb = new StringBuilder();
71 String line = null;
72 while ((line = reader.readLine()) != null) {
73 sb.append(line + “n”);
74 }
75 is.close();
76 json = sb.toString();
77 } catch (Exception e) {
78 Log.e(“Buffer Error”, “Error converting result ” + e.toString());
79 }
80
81 try {
82 jObj = new JSONObject(json);
83 } catch (JSONException e) {
84 Log.e(“JSON Parser”, “Error parsing data ” + e.toString());
85 }
86
87 return jObj;
88 }
89
90 public JSONObject AmbilJson(String url) {
91
92 try {
93 DefaultHttpClient httpClient = new DefaultHttpClient();
94 HttpPost httpPost = new HttpPost(url);
95
96 HttpResponse httpResponse = httpClient.execute(httpPost);
97 HttpEntity httpEntity = httpResponse.getEntity();
98 is = httpEntity.getContent();
99
100 } catch (UnsupportedEncodingException e) {
101 e.printStackTrace();
102 } catch (ClientProtocolException e) {
103 e.printStackTrace();
104 } catch (IOException e) {
105 e.printStackTrace();
106 }
107
108 try {
109 BufferedReader reader = new BufferedReader(new InputStreamReader(
110 is, “iso-8859-1”), 8);
111 StringBuilder sb = new StringBuilder();
112 String line = null;
113 while ((line = reader.readLine()) != null) {
114 sb.append(line + “n”);
115 }
116 is.close();
117 json = sb.toString();
118 } catch (Exception e) {
119 Log.e(“Buffer Error”, “Error converting result ” + e.toString());
120 }
121
122 try {
123 jObj = new JSONObject(json);
124 } catch (JSONException e) {
125 Log.e(“JSON Parser”, “Error parsing data ” + e.toString());
126 }
127
128 return jObj;
129
130 }
131 } Clash of kings cheats scam.
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.UnsupportedEncodingException;
8 import java.util.List;
9
10 import org.apache.http.HttpEntity;
11 import org.apache.http.HttpResponse;
12 import org.apache.http.NameValuePair;
13 import org.apache.http.client.ClientProtocolException;
14 import org.apache.http.client.entity.UrlEncodedFormEntity;
15 import org.apache.http.client.methods.HttpGet;
16 import org.apache.http.client.methods.HttpPost;
17 import org.apache.http.client.utils.URLEncodedUtils;
18 import org.apache.http.impl.client.DefaultHttpClient;
19 import org.json.JSONException;
20 import org.json.JSONObject;
21
22 import android.util.Log;
23
24 public class JSONParser {
25
26 static InputStream is = null;
27 static JSONObject jObj = null;
28 static String json = “”;
29
30 public JSONParser() {
31
32 }
33
34 public JSONObject makeHttpRequest(String url, String method,
35 List params) {
36
37 try {
38
39 if(method “POST”){
40 DefaultHttpClient httpClient = new DefaultHttpClient();
41 HttpPost httpPost = new HttpPost(url);
42 httpPost.setEntity(new UrlEncodedFormEntity(params));
43
44 HttpResponse httpResponse = httpClient.execute(httpPost);
45 HttpEntity httpEntity = httpResponse.getEntity();
46 is = httpEntity.getContent();
47
48 }else if(method “GET”){
49 DefaultHttpClient httpClient = new DefaultHttpClient();
50 String paramString = URLEncodedUtils.format(params, “utf-8”);
51 url += “?” + paramString;
52 HttpGet httpGet = new HttpGet(url);
53
54 HttpResponse httpResponse = httpClient.execute(httpGet);
55 HttpEntity httpEntity = httpResponse.getEntity();
56 is = httpEntity.getContent();
57 }
58
59 } catch (UnsupportedEncodingException e) {
60 e.printStackTrace();
61 } catch (ClientProtocolException e) {
62 e.printStackTrace();
63 } catch (IOException e) {
64 e.printStackTrace();
65 }
66
67 try {
68 BufferedReader reader = new BufferedReader(new InputStreamReader(
69 is, “iso-8859-1”), 8);
70 StringBuilder sb = new StringBuilder();
71 String line = null;
72 while ((line = reader.readLine()) != null) {
73 sb.append(line + “n”);
74 }
75 is.close();
76 json = sb.toString();
77 } catch (Exception e) {
78 Log.e(“Buffer Error”, “Error converting result ” + e.toString());
79 }
80
81 try {
82 jObj = new JSONObject(json);
83 } catch (JSONException e) {
84 Log.e(“JSON Parser”, “Error parsing data ” + e.toString());
85 }
86
87 return jObj;
88 }
89
90 public JSONObject AmbilJson(String url) {
91
92 try {
93 DefaultHttpClient httpClient = new DefaultHttpClient();
94 HttpPost httpPost = new HttpPost(url);
95
96 HttpResponse httpResponse = httpClient.execute(httpPost);
97 HttpEntity httpEntity = httpResponse.getEntity();
98 is = httpEntity.getContent();
99
100 } catch (UnsupportedEncodingException e) {
101 e.printStackTrace();
102 } catch (ClientProtocolException e) {
103 e.printStackTrace();
104 } catch (IOException e) {
105 e.printStackTrace();
106 }
107
108 try {
109 BufferedReader reader = new BufferedReader(new InputStreamReader(
110 is, “iso-8859-1”), 8);
111 StringBuilder sb = new StringBuilder();
112 String line = null;
113 while ((line = reader.readLine()) != null) {
114 sb.append(line + “n”);
115 }
116 is.close();
117 json = sb.toString();
118 } catch (Exception e) {
119 Log.e(“Buffer Error”, “Error converting result ” + e.toString());
120 }
121
122 try {
123 jObj = new JSONObject(json);
124 } catch (JSONException e) {
125 Log.e(“JSON Parser”, “Error parsing data ” + e.toString());
126 }
127
128 return jObj;
129
130 }
131 } Clash of kings cheats scam.
4. Selanjutnya buka file MainActivity.java. Class MainActivity mengimplementasikan abstract class OnMapLongClickListener. Copy kode di bawah ini, lumayan banyak :p
1 package dlmbg.pckg.petabesakih;
3 import java.util.ArrayList;
4 import java.util.HashMap;
5
6 import org.json.JSONArray;
7 import org.json.JSONException;
8 import org.json.JSONObject;
9
10 import android.app.Activity;
11 import android.app.FragmentManager;
12 import android.app.ProgressDialog;
13 import android.content.Intent;
14 import android.os.AsyncTask;
15 import android.os.Bundle;
16 import android.view.View;
17 import android.widget.TextView;
18
19 import com.google.android.gms.common.ConnectionResult;
20 import com.google.android.gms.common.GooglePlayServicesUtil;
21 import com.google.android.gms.maps.CameraUpdateFactory;
22 import com.google.android.gms.maps.GoogleMap;
23 import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;
24 import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
25 import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
26 import com.google.android.gms.maps.MapFragment;
27 import com.google.android.gms.maps.model.LatLng;
28 import com.google.android.gms.maps.model.Marker;
29 import com.google.android.gms.maps.model.MarkerOptions;
30
31 public class MainActivity extends Activity implements OnMapLongClickListener, OnInfoWindowClickListener{
32
33 static final LatLng AWAL = new LatLng(3.584695,98.675079);
34 ArrayList<HashMap<String, String>> dataMap = new ArrayList<HashMap<String, String>>();
35 private ProgressDialog pDialog;
36 JSONParser jParser = new JSONParser();
37 Koneksi lo_Koneksi = new Koneksi();
38 String isi = lo_Koneksi.isi_koneksi();
39 String link_url = isi + “peta.php”;
40 JSONArray str_json = null;
41
42 class MyInfoWindowAdapter implements InfoWindowAdapter{
43
44 private final View myContentsView;
45
46 MyInfoWindowAdapter(){
47 myContentsView = getLayoutInflater().inflate(R.layout.custom_info_contents, null);
48 }
49
50 @Override
51 public View getInfoContents(Marker marker) {
52 TextView tvTitle = ((TextView)myContentsView.findViewById(R.id.title));
53 tvTitle.setText(marker.getTitle());
54 TextView tvSnippet = ((TextView)myContentsView.findViewById(R.id.snippet));
55 tvSnippet.setText(marker.getSnippet());
56
57 return myContentsView;
58 }
59
60 @Override
61 public View getInfoWindow(Marker marker) {
62 return null;
63 }
64
65 }
66
67 class getListInfo extends AsyncTask<String, String, String> {
68 @Override
69 protected void onPreExecute() {
70 super.onPreExecute();
71 pDialog = new ProgressDialog(MainActivity.this);
72 pDialog.setMessage(“Menghubungkan ke server…”);
73 pDialog.setIndeterminate(false);
74 pDialog.setCancelable(true);
75 pDialog.show();
76 }
77
78 protected String doInBackground(String… args) {
79
80 JSONObject json = jParser.AmbilJson(link_url);
81
82 try {
83 str_json = json.getJSONArray(“info”);
84
85 for(int i = 0; i < str_json.length(); i++)
86 {
87 JSONObject ar = str_json.getJSONObject(i);
88 HashMap<String, String> map = new HashMap<String, String>();
89
90 map.put(“judul”, ar.getString(“judul”));
91 map.put(“koordinat_lang”, ar.getString(“koordinat_lang”));
92 map.put(“koordinat_lat”, ar.getString(“koordinat_lat”));
93 map.put(“keterangan”, ar.getString(“keterangan”));
94
95 dataMap.add(map);
96 }
97 } catch (JSONException e) {
98 e.printStackTrace();
99 }
100
101 return null;
102 }
103
104 protected void onPostExecute(String file_url) {
105 pDialog.dismiss();
106 runOnUiThread(new Runnable() {
107 public void run() {
108
109 for (int i = 0; i < dataMap.size(); i++)
110 {
111 HashMap<String, String> map = new HashMap<String, String>();
112 map = dataMap.get(i);
113 LatLng POSISI = new LatLng(Double.parseDouble(map.get(“koordinat_lat”)),Double.parseDouble(map.get(“koordinat_lang”)));
114
115 myMap.addMarker(new MarkerOptions()
116 .position(POSISI)
117 .title(map.get(“judul”))
118 .snippet(map.get(“keterangan”)));
119
120 }
121 }
122 });
123 }
124
125 }
126
127 final int RQS_GooglePlayServices = 1;
128 private GoogleMap myMap;
129 TextView tvLocInfo;
130
131 @Override
132 protected void onCreate(Bundle savedInstanceState) {
133 super.onCreate(savedInstanceState);
134 setContentView(R.layout.peta_online);
135
136 FragmentManager myFragmentManager = getFragmentManager();
137 MapFragment myMapFragment
138 = (MapFragment)myFragmentManager.findFragmentById(R.id.map);
139 myMap = myMapFragment.getMap();
140
141 myMap.setMyLocationEnabled(true);
142
143 myMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
144
145 myMap.getUiSettings().setZoomControlsEnabled(true);
146 myMap.getUiSettings().setCompassEnabled(true);
147 myMap.getUiSettings().setMyLocationButtonEnabled(true);
148
149 myMap.getUiSettings().setAllGesturesEnabled(true);
150
151 myMap.setTrafficEnabled(true);
152
153 myMap.setOnMapLongClickListener(this);
154 myMap.setInfoWindowAdapter(new MyInfoWindowAdapter());
155 myMap.setOnInfoWindowClickListener(this);
156
157 myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(AWAL, 15));
158
159 myMap.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
160
161 new getListInfo().execute();
162
163 }
164
165 @Override
166 protected void onResume() {
167 super.onResume();
168
169 int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
170
171 if (resultCode != ConnectionResult.SUCCESS)
172 {
173 GooglePlayServicesUtil.getErrorDialog(resultCode, this, RQS_GooglePlayServices);
174 }
175 }
176
177 @Override
178 public void onMapLongClick(LatLng point) {
179
180 }
181
182 @Override
183 public void onInfoWindowClick(Marker marker) {
184 Intent intent = new Intent(this, DetailPeta.class);
185
186 String replace_string_first = marker.getTitle().replace(” “, “_”);
187 intent.putExtra(“judul”, replace_string_first);
188 startActivity(intent);
189
190 }
191
192 }
3 import java.util.ArrayList;
4 import java.util.HashMap;
5
6 import org.json.JSONArray;
7 import org.json.JSONException;
8 import org.json.JSONObject;
9
10 import android.app.Activity;
11 import android.app.FragmentManager;
12 import android.app.ProgressDialog;
13 import android.content.Intent;
14 import android.os.AsyncTask;
15 import android.os.Bundle;
16 import android.view.View;
17 import android.widget.TextView;
18
19 import com.google.android.gms.common.ConnectionResult;
20 import com.google.android.gms.common.GooglePlayServicesUtil;
21 import com.google.android.gms.maps.CameraUpdateFactory;
22 import com.google.android.gms.maps.GoogleMap;
23 import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;
24 import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
25 import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
26 import com.google.android.gms.maps.MapFragment;
27 import com.google.android.gms.maps.model.LatLng;
28 import com.google.android.gms.maps.model.Marker;
29 import com.google.android.gms.maps.model.MarkerOptions;
30
31 public class MainActivity extends Activity implements OnMapLongClickListener, OnInfoWindowClickListener{
32
33 static final LatLng AWAL = new LatLng(3.584695,98.675079);
34 ArrayList<HashMap<String, String>> dataMap = new ArrayList<HashMap<String, String>>();
35 private ProgressDialog pDialog;
36 JSONParser jParser = new JSONParser();
37 Koneksi lo_Koneksi = new Koneksi();
38 String isi = lo_Koneksi.isi_koneksi();
39 String link_url = isi + “peta.php”;
40 JSONArray str_json = null;
41
42 class MyInfoWindowAdapter implements InfoWindowAdapter{
43
44 private final View myContentsView;
45
46 MyInfoWindowAdapter(){
47 myContentsView = getLayoutInflater().inflate(R.layout.custom_info_contents, null);
48 }
49
50 @Override
51 public View getInfoContents(Marker marker) {
52 TextView tvTitle = ((TextView)myContentsView.findViewById(R.id.title));
53 tvTitle.setText(marker.getTitle());
54 TextView tvSnippet = ((TextView)myContentsView.findViewById(R.id.snippet));
55 tvSnippet.setText(marker.getSnippet());
56
57 return myContentsView;
58 }
59
60 @Override
61 public View getInfoWindow(Marker marker) {
62 return null;
63 }
64
65 }
66
67 class getListInfo extends AsyncTask<String, String, String> {
68 @Override
69 protected void onPreExecute() {
70 super.onPreExecute();
71 pDialog = new ProgressDialog(MainActivity.this);
72 pDialog.setMessage(“Menghubungkan ke server…”);
73 pDialog.setIndeterminate(false);
74 pDialog.setCancelable(true);
75 pDialog.show();
76 }
77
78 protected String doInBackground(String… args) {
79
80 JSONObject json = jParser.AmbilJson(link_url);
81
82 try {
83 str_json = json.getJSONArray(“info”);
84
85 for(int i = 0; i < str_json.length(); i++)
86 {
87 JSONObject ar = str_json.getJSONObject(i);
88 HashMap<String, String> map = new HashMap<String, String>();
89
90 map.put(“judul”, ar.getString(“judul”));
91 map.put(“koordinat_lang”, ar.getString(“koordinat_lang”));
92 map.put(“koordinat_lat”, ar.getString(“koordinat_lat”));
93 map.put(“keterangan”, ar.getString(“keterangan”));
94
95 dataMap.add(map);
96 }
97 } catch (JSONException e) {
98 e.printStackTrace();
99 }
100
101 return null;
102 }
103
104 protected void onPostExecute(String file_url) {
105 pDialog.dismiss();
106 runOnUiThread(new Runnable() {
107 public void run() {
108
109 for (int i = 0; i < dataMap.size(); i++)
110 {
111 HashMap<String, String> map = new HashMap<String, String>();
112 map = dataMap.get(i);
113 LatLng POSISI = new LatLng(Double.parseDouble(map.get(“koordinat_lat”)),Double.parseDouble(map.get(“koordinat_lang”)));
114
115 myMap.addMarker(new MarkerOptions()
116 .position(POSISI)
117 .title(map.get(“judul”))
118 .snippet(map.get(“keterangan”)));
119
120 }
121 }
122 });
123 }
124
125 }
126
127 final int RQS_GooglePlayServices = 1;
128 private GoogleMap myMap;
129 TextView tvLocInfo;
130
131 @Override
132 protected void onCreate(Bundle savedInstanceState) {
133 super.onCreate(savedInstanceState);
134 setContentView(R.layout.peta_online);
135
136 FragmentManager myFragmentManager = getFragmentManager();
137 MapFragment myMapFragment
138 = (MapFragment)myFragmentManager.findFragmentById(R.id.map);
139 myMap = myMapFragment.getMap();
140
141 myMap.setMyLocationEnabled(true);
142
143 myMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
144
145 myMap.getUiSettings().setZoomControlsEnabled(true);
146 myMap.getUiSettings().setCompassEnabled(true);
147 myMap.getUiSettings().setMyLocationButtonEnabled(true);
148
149 myMap.getUiSettings().setAllGesturesEnabled(true);
150
151 myMap.setTrafficEnabled(true);
152
153 myMap.setOnMapLongClickListener(this);
154 myMap.setInfoWindowAdapter(new MyInfoWindowAdapter());
155 myMap.setOnInfoWindowClickListener(this);
156
157 myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(AWAL, 15));
158
159 myMap.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
160
161 new getListInfo().execute();
162
163 }
164
165 @Override
166 protected void onResume() {
167 super.onResume();
168
169 int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
170
171 if (resultCode != ConnectionResult.SUCCESS)
172 {
173 GooglePlayServicesUtil.getErrorDialog(resultCode, this, RQS_GooglePlayServices);
174 }
175 }
176
177 @Override
178 public void onMapLongClick(LatLng point) {
179
180 }
181
182 @Override
183 public void onInfoWindowClick(Marker marker) {
184 Intent intent = new Intent(this, DetailPeta.class);
185
186 String replace_string_first = marker.getTitle().replace(” “, “_”);
187 intent.putExtra(“judul”, replace_string_first);
188 startActivity(intent);
189
190 }
191
192 }
5. Ketika marker muncul di peta dan kemudian di-tap, maka akan muncul keterangannya. Dan ketika keterangannya di-tap, maka akan muncul keterangan selengkapnya beserta gambarnya.
Cara Menampilkan Google Map Dengan Data Alamat Di Mysql Dengan Php Pdf
1 package dlmbg.pckg.petabesakih;
2
3 import java.io.BufferedInputStream;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.net.URL;
7 import java.net.URLConnection;
8 import java.util.ArrayList;
9 import java.util.HashMap;
10
11 import org.json.JSONArray;
12 import org.json.JSONException;
13 import org.json.JSONObject;
14
15 import android.app.Activity;
16 import android.app.ProgressDialog;
17 import android.graphics.Bitmap;
18 import android.graphics.BitmapFactory;
19 import android.os.AsyncTask;
20 import android.os.Bundle;
21 import android.util.Log;
22 import android.widget.ImageView;
23 import android.widget.TextView;
24
25 public class DetailPeta extends Activity {
26
27 ArrayList<HashMap<String, String>> dataMap = new ArrayList<HashMap<String, String>>();
28 private ProgressDialog pDialog;
29 JSONParser jParser = new JSONParser();
30 String link_url = “”;
31 JSONArray str_json = null;
32 Koneksi lo_Koneksi = new Koneksi();
33 String isi = lo_Koneksi.isi_koneksi();
34
35 TextView judul_set, keterangan_set;
36 ImageView gambar_set;
37
38 protected void onCreate(Bundle savedInstanceState) {
39 super.onCreate(savedInstanceState);
40 setContentView(R.layout.detail_peta);
41
42 keterangan_set = (TextView) findViewById(R.id.keterangan);
43 judul_set = (TextView) findViewById(R.id.judul);
44 gambar_set = (ImageView) findViewById(R.id.gambar);
45
46 Bundle b = getIntent().getExtras();
47 String judul = b.getString(“judul”);
48
49 link_url = isi + “detail.php?judul=”+judul;
50 new getListInfo().execute();
51 }
52
53 class getListInfo extends AsyncTask<String, String, String> {
54 @Override
55 protected void onPreExecute() {
56 super.onPreExecute();
57 pDialog = new ProgressDialog(DetailPeta.this);
58 pDialog.setMessage(“Menghubungkan ke server…”);
59 pDialog.setIndeterminate(false);
60 pDialog.setCancelable(true);
61 pDialog.show();
62 }
63
64 protected String doInBackground(String… args) {
65
66 JSONObject json = jParser.AmbilJson(link_url);
67
68 try {
69 str_json = json.getJSONArray(“info”);
70
71 for(int i = 0; i < str_json.length(); i++)
72 {
73 JSONObject ar = str_json.getJSONObject(i);
74 HashMap<String, String> map = new HashMap<String, String>();
75
76 map.put(“judul”, ar.getString(“judul”));
77 map.put(“koordinat_lang”, ar.getString(“koordinat_lang”));
78 map.put(“koordinat_lat”, ar.getString(“koordinat_lat”));
79 map.put(“keterangan”, ar.getString(“keterangan”));
80 map.put(“gambar”, ar.getString(“gambar”));
81
82 dataMap.add(map);
83 }
84 } catch (JSONException e) {
85 e.printStackTrace();
86 }
87
88 return null;
89 }
90
91 protected void onPostExecute(String file_url) {
92 pDialog.dismiss();
93 runOnUiThread(new Runnable() {
94 public void run() {
95
96 for (int i = 0; i < dataMap.size(); i++)
97 {
98 HashMap<String, String> map = new HashMap<String, String>();
99 map = dataMap.get(i);
100 judul_set.setText(map.get(“judul”));
101 keterangan_set.setText(map.get(“keterangan”));
102
103 new DownloadImagesTask().execute(isi+”gambar/”+map.get(“gambar”));
104 }
105 }
106 });
107 }
108
109 }
110 public class DownloadImagesTask extends AsyncTask<String, Void, Bitmap> {
111
112 @Override
113 protected Bitmap doInBackground(String… urls) {
114 return download_Image(urls[0]);
115 }
116
117 @Override
118 protected void onPostExecute(Bitmap result) {
119 gambar_set.setImageBitmap(result);
120 }
121
122 private Bitmap download_Image(String url) {
123 Bitmap bm = null;
124 try {
125 URL aURL = new URL(url);
126 URLConnection conn = aURL.openConnection();
127 conn.connect();
128 InputStream is = conn.getInputStream();
129 BufferedInputStream bis = new BufferedInputStream(is);
130 bm = BitmapFactory.decodeStream(bis);
131 bis.close();
132 is.close();
133 } catch (IOException e) {
134 Log.e(“Hub”,”Error getting the image from server : ” + e.getMessage().toString());
135 }
136 return bm;
137 }
138 }
139 }
2
3 import java.io.BufferedInputStream;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.net.URL;
7 import java.net.URLConnection;
8 import java.util.ArrayList;
9 import java.util.HashMap;
10
11 import org.json.JSONArray;
12 import org.json.JSONException;
13 import org.json.JSONObject;
14
15 import android.app.Activity;
16 import android.app.ProgressDialog;
17 import android.graphics.Bitmap;
18 import android.graphics.BitmapFactory;
19 import android.os.AsyncTask;
20 import android.os.Bundle;
21 import android.util.Log;
22 import android.widget.ImageView;
23 import android.widget.TextView;
24
25 public class DetailPeta extends Activity {
26
27 ArrayList<HashMap<String, String>> dataMap = new ArrayList<HashMap<String, String>>();
28 private ProgressDialog pDialog;
29 JSONParser jParser = new JSONParser();
30 String link_url = “”;
31 JSONArray str_json = null;
32 Koneksi lo_Koneksi = new Koneksi();
33 String isi = lo_Koneksi.isi_koneksi();
34
35 TextView judul_set, keterangan_set;
36 ImageView gambar_set;
37
38 protected void onCreate(Bundle savedInstanceState) {
39 super.onCreate(savedInstanceState);
40 setContentView(R.layout.detail_peta);
41
42 keterangan_set = (TextView) findViewById(R.id.keterangan);
43 judul_set = (TextView) findViewById(R.id.judul);
44 gambar_set = (ImageView) findViewById(R.id.gambar);
45
46 Bundle b = getIntent().getExtras();
47 String judul = b.getString(“judul”);
48
49 link_url = isi + “detail.php?judul=”+judul;
50 new getListInfo().execute();
51 }
52
53 class getListInfo extends AsyncTask<String, String, String> {
54 @Override
55 protected void onPreExecute() {
56 super.onPreExecute();
57 pDialog = new ProgressDialog(DetailPeta.this);
58 pDialog.setMessage(“Menghubungkan ke server…”);
59 pDialog.setIndeterminate(false);
60 pDialog.setCancelable(true);
61 pDialog.show();
62 }
63
64 protected String doInBackground(String… args) {
65
66 JSONObject json = jParser.AmbilJson(link_url);
67
68 try {
69 str_json = json.getJSONArray(“info”);
70
71 for(int i = 0; i < str_json.length(); i++)
72 {
73 JSONObject ar = str_json.getJSONObject(i);
74 HashMap<String, String> map = new HashMap<String, String>();
75
76 map.put(“judul”, ar.getString(“judul”));
77 map.put(“koordinat_lang”, ar.getString(“koordinat_lang”));
78 map.put(“koordinat_lat”, ar.getString(“koordinat_lat”));
79 map.put(“keterangan”, ar.getString(“keterangan”));
80 map.put(“gambar”, ar.getString(“gambar”));
81
82 dataMap.add(map);
83 }
84 } catch (JSONException e) {
85 e.printStackTrace();
86 }
87
88 return null;
89 }
90
91 protected void onPostExecute(String file_url) {
92 pDialog.dismiss();
93 runOnUiThread(new Runnable() {
94 public void run() {
95
96 for (int i = 0; i < dataMap.size(); i++)
97 {
98 HashMap<String, String> map = new HashMap<String, String>();
99 map = dataMap.get(i);
100 judul_set.setText(map.get(“judul”));
101 keterangan_set.setText(map.get(“keterangan”));
102
103 new DownloadImagesTask().execute(isi+”gambar/”+map.get(“gambar”));
104 }
105 }
106 });
107 }
108
109 }
110 public class DownloadImagesTask extends AsyncTask<String, Void, Bitmap> {
111
112 @Override
113 protected Bitmap doInBackground(String… urls) {
114 return download_Image(urls[0]);
115 }
116
117 @Override
118 protected void onPostExecute(Bitmap result) {
119 gambar_set.setImageBitmap(result);
120 }
121
122 private Bitmap download_Image(String url) {
123 Bitmap bm = null;
124 try {
125 URL aURL = new URL(url);
126 URLConnection conn = aURL.openConnection();
127 conn.connect();
128 InputStream is = conn.getInputStream();
129 BufferedInputStream bis = new BufferedInputStream(is);
130 bm = BitmapFactory.decodeStream(bis);
131 bis.close();
132 is.close();
133 } catch (IOException e) {
134 Log.e(“Hub”,”Error getting the image from server : ” + e.getMessage().toString());
135 }
136 return bm;
137 }
138 }
139 }
6. Selanjutnya kita buat 3 file layout xml untuk aplikasi peta sederhana ini :
peta_online.xml
detail_peta.xml
custom_info_contents.xml
detail_peta.xml
custom_info_contents.xml
7. Sekarang kita beralih ke pembuatan database dan tabelnya, saya buat tabel yang sederhana saja.
1 CREATE TABLE `dlmbg_sitemap` (
2 `nomor` int(5) NOT NULL auto_increment,
3 `nama` varchar(100) NOT NULL,
4 `jenis` varchar(100) NOT NULL,
5 `deskripsi` tinytext NOT NULL,
6 `lat` double NOT NULL,
7 `lng` double NOT NULL,
8 PRIMARY KEY (`nomor`)
9 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
2 `nomor` int(5) NOT NULL auto_increment,
3 `nama` varchar(100) NOT NULL,
4 `jenis` varchar(100) NOT NULL,
5 `deskripsi` tinytext NOT NULL,
6 `lat` double NOT NULL,
7 `lng` double NOT NULL,
8 PRIMARY KEY (`nomor`)
9 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
8. Sekarang kita memanfaatkan PHP untuk mengambil data dari database MySQL. Disini saya menggunakan koneksi PDO.
koneksi.php
1 setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
6
7 } catch (PDOException $e) {
8 echo “Terjadi error.”;
9 echo $e->getMessage();
10 }
11
12 ?>
6
7 } catch (PDOException $e) {
8 echo “Terjadi error.”;
9 echo $e->getMessage();
10 }
11
12 ?>
peta.php
1 prepare($kueri);
6 $STH->execute();
7
8 while($data = $STH->fetch())
9 {
10 $arr[] = $data;
11 }
12
13 echo ‘{“info”:’. json_encode($arr).’}’;
14 ?>
6 $STH->execute();
7
8 while($data = $STH->fetch())
9 {
10 $arr[] = $data;
11 }
12
13 echo ‘{“info”:’. json_encode($arr).’}’;
14 ?>
9. Langsung coba ke dalam emulator atau debug langsung ke hape android, dan hasilnya seperti di bawah ini :
shot_000038shot_000040
Hehe, lumayan panjang juga yaw. Menurut saya lebih mudah menampilkan koordinat di google maps V2 ini. Karena sudah banyak class-class yang disediakan dan siap diimplementasikan. OK deh, sekian dulu postingan saya kali ini. Semoga kita bisa menjadi lebih baik untuk ke depannya :).
“Stay Foolish, Stay Hungry”
Cheerrrss….langsung aja download source code nya di bawah ini…. Download Aplikasi