package org.kost;
import java.util.Iterator;
import java.util.List;
import org.mixare.lib.R;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import direction.json.GPStracker;
import direction.json.GoogleParser;
import direction.json.MapDirection;
import direction.json.MyItemizedOverlay;
import direction.json.Parser;
import direction.json.Route;
import direction.json.RouteOverlay;
public class Rute extends MapActivity {
private MapView mapView;
private LocationManager lm;
private LocationListener ls;
MapController myMC = null;
GeoPoint g = null;
Uri uri;
GPStracker gps;
MapView mapRoute;
String lat, lon;
double mLat, mLon;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rute);
mapView = (MapView) findViewById(R.id.mapRute);
gps = new GPStracker(this);
Intent i = getIntent();
lat = i.getStringExtra("latitude");
lon = i.getStringExtra("longitude");
//Toast.makeText(getApplicationContext(), lat+"<>"+lon, Toast.LENGTH_SHORT).show();
mLat = Double.parseDouble(lat);
mLon = Double.parseDouble(lon);
//tampilRute();
//getGPS();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
public void getGPS() {
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
ls = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
tampilPeta(location);
}
};
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1000, ls);
}
protected void tampilPeta(Location myloc) {
List<Overlay> overlays = mapView.getOverlays();
if (overlays.size() > 0) {
for (Iterator<Overlay> iterator = overlays.iterator(); iterator
.hasNext();) {
iterator.next();
iterator.remove();
}
}
GeoPoint gp = new GeoPoint((int) (myloc.getLatitude() * 1E6),
(int) (myloc.getLongitude() * 1E6));
Location locA = new Location("Posisi Awal");
locA.setLatitude(gp.getLatitudeE6() / 1E6);
locA.setLongitude(gp.getLongitudeE6() / 1E6);
Drawable icon = getResources().getDrawable(R.drawable.marker);
icon.setBounds(0, 0, icon.getIntrinsicWidth(),
icon.getIntrinsicHeight());
MyItemizedOverlay overlay = new MyItemizedOverlay(icon, this);
OverlayItem item = new OverlayItem(gp, "Posisi Awal", "posisi start");
overlay.addItem(item);
mapView.getOverlays().add(overlay);
GeoPoint dest = new GeoPoint((int) (mLat * 1E6), (int) (mLon * 1E6));
Location locB = new Location("Lokasi Tujuan");
locB.setLatitude(dest.getLatitudeE6() / 1E6);
locB.setLongitude(dest.getLongitudeE6() / 1E6);
icon = getResources().getDrawable(R.drawable.marker2);
icon.setBounds(0, 0, icon.getIntrinsicWidth(),
icon.getIntrinsicHeight());
overlay = new MyItemizedOverlay(icon, this);
item = new OverlayItem(dest, "Tujuan", "GP tujuan");
overlay.addItem(item);
mapView.getOverlays().add(overlay);
Route rute = directions(gp, dest);
RouteOverlay rOverlay = new RouteOverlay(rute, Color.BLUE);
mapView.getOverlays().add(rOverlay);
mapView.getController().animateTo(gp);
mapView.postInvalidate();
mapView.displayZoomControls(true);
mapView.setBuiltInZoomControls(true);
mapView.getController().setZoom(15);
}
private void tampilRute(){
GeoPoint gp = new GeoPoint((int) (gps.getLatitude() * 1E6),
(int) (gps.getLongitude() * 1E6));
//mapView.getOverlays().add(new MapDirection(gp, gp));
GeoPoint dest = new GeoPoint((int) (mLat * 1E6), (int) (mLon * 1E6));
Location locB = new Location("Lokasi Tujuan");
locB.setLatitude(dest.getLatitudeE6() / 1E6);
locB.setLongitude(dest.getLongitudeE6() / 1E6);
mapView.getOverlays().add(new MapDirection(gp, dest));
mapView.getController().animateTo(gp);
mapView.postInvalidate();
mapView.displayZoomControls(true);
mapView.setBuiltInZoomControls(true);
mapView.getController().setZoom(15);
}
private Route directions(final GeoPoint start, final GeoPoint dest) {
Parser parser;
final StringBuffer sBuf = new StringBuffer(
"http://maps.googleapis.com/maps/api/directions/json?");
sBuf.append("origin=");
sBuf.append(start.getLatitudeE6() / 1E6);
sBuf.append(',');
sBuf.append(start.getLongitudeE6() / 1E6);
sBuf.append("&destination=");
sBuf.append(dest.getLatitudeE6() / 1E6);
sBuf.append(',');
sBuf.append(dest.getLongitudeE6() / 1E6);
sBuf.append("&sensor=true&mode=driving");
parser = new GoogleParser(sBuf.toString());
Route r = parser.parse();
return r;
}
}