 |
google maps android |
Tutorial Android Google Map Direction - Aplikasi LBS tanpa fitur direction ibarat makan somai tanpa bumbu,
untuk itu kita harus mengetahui cara menggambar direction pada googlemap
android.
Sebetulnya jawaban bagaimana cara menggambar
driving direction diandroid dapat kita lakukan dengan search melalui google. Dalam perjalanan pencarian ini, saya dapatkan jawabannya dari
http://about-android.blogspot.com/2010/03/sample-google-map-driving-direction.html
Sejak tanggal 27 Juli 2012 direction dengan KML sudah tidak disupport googlesebagai laternatifnya silahkan kunjungi
Tutorial Android GoogleMap Direction JSON
Pada tutorial kali ini saya tidak banyak merubah kode yang ada di
link tersebut. Saya hanya merubah sedikit saja agar lebih mudah
dimengerti. Mari kita mulai langkah-langkahnya.
1. Buat Project baru isikan fieldnya seperti dibawah ini

2.. Kita siapkan layout untuk aplikasi kita, edit file
main.xm
01 | xml version = "1.0" encoding = "utf-8" ?>
|
03 | android:layout_width = "fill_parent" |
04 | android:layout_height = "fill_parent" > |
06 | < com.google.android.maps.MapView |
07 | android:id = "@+id/mapView" |
08 | android:layout_width = "fill_parent" |
09 | android:layout_height = "fill_parent" |
10 | android:enabled = "true" |
11 | android:clickable = "true" |
12 | android:apiKey = "0bvY2ipiUvzSE4ybKkHjanqDBGKckFswnJuPw7A" |
15 | < LinearLayout android:id = "@+id/zoom" |
16 | android:layout_width = "wrap_content" |
17 | android:layout_height = "wrap_content" |
18 | android:layout_alignParentBottom = "true" |
19 | android:layout_centerHorizontal = "true" |
3. Buat Class java baru lalu simpan dengan nama
DirectionPathOverlay.java, lalu isikan dengan kode berikut.
01 | package com.agus.direction; |
03 | import android.graphics.Canvas; |
04 | import android.graphics.Color; |
05 | import android.graphics.Paint; |
06 | import android.graphics.Point; |
08 | import com.google.android.maps.GeoPoint; |
09 | import com.google.android.maps.MapView; |
10 | import com.google.android.maps.Overlay; |
11 | import com.google.android.maps.Projection; |
13 | public class DirectionPathOverlay extends Overlay { |
16 | public DirectionPathOverlay(GeoPoint gp1, GeoPoint gp2) { |
22 | public boolean draw(Canvas canvas, MapView mapView, boolean shadow, |
25 | Projection projection = mapView.getProjection(); |
26 | if (shadow == false ) { |
27 | Paint paint = new Paint(); |
28 | paint.setAntiAlias( true ); |
29 | Point point = new Point(); |
30 | projection.toPixels(gp1, point); |
31 | paint.setColor(Color.GREEN); |
32 | Point point2 = new Point(); |
33 | projection.toPixels(gp2, point2); |
34 | paint.setStrokeWidth( 3 ); |
35 | canvas.drawLine(( float ) point.x, ( float ) point.y, ( float ) point2.x, |
36 | ( float ) point2.y, paint); |
38 | return super .draw(canvas, mapView, shadow, when); |
42 | public void draw(Canvas canvas, MapView mapView, boolean shadow) { |
45 | super .draw(canvas, mapView, shadow); |
Class inilah yang nantinya akan menggambarkan direction (
jalur) antara dua tempat, disini kita bisa menset warna untuk directionnya dengan perintah
1 | paint.setColor(Color.GREEN); |
Perintah diatas akan membuat warna directionnya hijau
Kita juga dapat mengatur tebal tipisnya garis direction dengan perintah
1 | paint.setStrokeWidth( 3 ); |
Perintah diatas akan membuat ketebalan garis directionnya 3 pixel.
4. Sekarang Edit file
BelajarDirectionActivity.java, isi dengan kode berikut
001 | package com.agus.direction; |
003 | import java.net.HttpURLConnection; |
006 | import javax.xml.parsers.DocumentBuilder; |
007 | import javax.xml.parsers.DocumentBuilderFactory; |
009 | import org.w3c.dom.Document; |
010 | import org.w3c.dom.Node; |
011 | import org.w3c.dom.NodeList; |
013 | import android.os.Bundle; |
014 | import android.util.Log; |
016 | import com.google.android.maps.GeoPoint; |
017 | import com.google.android.maps.MapActivity; |
018 | import com.google.android.maps.MapController; |
019 | import com.google.android.maps.MapView; |
021 | public class BelajarDirectionActivity extends MapActivity { |
022 | MapView myMapView = null ; |
023 | MapController myMC = null ; |
024 | GeoPoint geoPoint = null ; |
026 | /** Called when the activity is first created. */ |
028 | public void onCreate(Bundle savedInstanceState) { |
029 | super .onCreate(savedInstanceState); |
030 | setContentView(R.layout.main); |
031 | myMapView = (MapView) findViewById(R.id.mapView); |
033 | myMapView.setSatellite( false ); |
034 | String ragunan = "-6.3039,106.8267" ; |
035 | String tamanmini = "-6.29436,106.8859" ; |
036 | String pairs[] = getDirectionData(ragunan, tamanmini); |
037 | String[] lngLat = pairs[ 0 ].split( "," ); |
040 | GeoPoint startGP = new GeoPoint( |
041 | ( int ) (Double.parseDouble(lngLat[ 1 ]) * 1E6), ( int ) (Double |
042 | .parseDouble(lngLat[ 0 ]) * 1E6)); |
044 | myMC = myMapView.getController(); |
046 | myMC.setCenter(geoPoint); |
048 | myMapView.getOverlays().add( new DirectionPathOverlay(startGP, startGP)); |
052 | GeoPoint gp2 = startGP; |
054 | for ( int i = 1 ; i < pairs.length; i++) { |
055 | lngLat = pairs[i].split( "," ); |
058 | gp2 = new GeoPoint(( int ) (Double.parseDouble(lngLat[ 1 ]) * 1E6), |
059 | ( int ) (Double.parseDouble(lngLat[ 0 ]) * 1E6)); |
060 | myMapView.getOverlays().add( new DirectionPathOverlay(gp1, gp2)); |
065 | myMapView.getOverlays().add( new DirectionPathOverlay(gp2, gp2)); |
067 | myMapView.getController().animateTo(startGP); |
068 | myMapView.setBuiltInZoomControls( true ); |
069 | myMapView.displayZoomControls( true ); |
074 | protected boolean isRouteDisplayed() { |
079 | private String[] getDirectionData(String srcPlace, String destPlace) { |
082 | + srcPlace + "&daddr=" + destPlace |
083 | + "&ie=UTF8&0&om=0&output=kml" ; |
086 | HttpURLConnection urlConnection = null ; |
088 | String pathConent = "" ; |
091 | url = new URL(urlString.toString()); |
092 | urlConnection = (HttpURLConnection) url.openConnection(); |
093 | urlConnection.setRequestMethod( "GET" ); |
094 | urlConnection.setDoOutput( true ); |
095 | urlConnection.setDoInput( true ); |
096 | urlConnection.connect(); |
097 | DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); |
098 | DocumentBuilder db = dbf.newDocumentBuilder(); |
099 | doc = db.parse(urlConnection.getInputStream()); |
101 | } catch (Exception e) { |
104 | NodeList nl = doc.getElementsByTagName( "LineString" ); |
105 | for ( int s = 0 ; s < nl.getLength(); s++) { |
106 | Node rootNode = nl.item(s); |
107 | NodeList configItems = rootNode.getChildNodes(); |
108 | for ( int x = 0 ; x < configItems.getLength(); x++) { |
109 | Node lineStringNode = configItems.item(x); |
110 | NodeList path = lineStringNode.getChildNodes(); |
111 | pathConent = path.item( 0 ).getNodeValue(); |
114 | String[] tempContent = pathConent.split( " " ); |
Disini kita akan menampilkan direction dari Kebun Binatang Ragunan ke Taman Mini Indonesia Indah.
Perhatikan Method
getDirectionData. Method inilah yang menjadi otak untuk mendapatkan data titik koordinat yang akan dijadikan panduan untuk menggambar direction
5. Jangan lupa kita harus menambahkan permission untuk INTERNET pada file AndroidManifest.xml
01 | xml version = "1.0" encoding = "utf-8" ?>
|
03 | package = "com.agus.direction" |
04 | android:versionCode = "1" |
05 | android:versionName = "1.0" > |
06 | < uses-sdk android:minSdkVersion = "8" /> |
08 | < application android:icon = "@drawable/icon" android:label = "@string/app_name" > |
09 | < uses-library android:name = "com.google.android.maps" /> |
10 | < activity android:name = ".BelajarDirectionActivity" |
11 | android:label = "@string/app_name" > |
13 | < action android:name = "android.intent.action.MAIN" /> |
14 | < category android:name = "android.intent.category.LAUNCHER" /> |
19 | < uses-permission android:name = "android.permission.INTERNET" ></ uses-permission > |
6. Sekarang mari kita run programnya.

Wow, Jalur Directionnya berhasil tergambar di map dengan warna hijau.
Coba mainkan perintah kode paint.setColor pada file
DirectionPathOverlay.java untuk merubah-rubah warna jalurnya.
Directionnya sudah tergambar tapi kok tidak ada markernya yah. Nah
pada bagian akhir tutorial kali ini para pembaca dan penggemar setia
blog ini saya kasih tantangan untuk menambahkan marker pada titik
ragunan dan titik taman mini.
Semoga Bermanfaat
sumber
http://about-android.blogspot.com/2010/03/sample-google-map-driving-direction.html
http://agusharyanto.net/
How To Change Blogger Background
BalasHapusBest Free Seo Tools to Optimize Your Blog
Profitable for your business - Guest Blogging
What Function Margin at Your CSS / Tips For Beginner
How to Host Jquery Script in Blogger / Blogspot
How to Earn Money with Chatika, Clicksor & Adhitz Learn in Urdu
How to Reduce site/blog Loading Speed Time?
Social Media & Email Subscription Box For Blogger
SiteMap
How to Make / Install Back To Top Button With
NoFollow | Understanding tag (rel = "nofollow") Attribute
Change Blog's Background Color Automatically with JavaScript
Create A Full-Width Page Without Sidebar In Blogger