Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.gui;
- import java.io.IOException;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.List;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import org.w3c.dom.Document;
- import org.xml.sax.SAXException;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
- import android.graphics.Path;
- import android.graphics.Point;
- import android.graphics.RectF;
- import android.graphics.drawable.Drawable;
- import android.location.Address;
- import android.location.Geocoder;
- import android.location.Location;
- import android.location.LocationListener;
- import android.location.LocationManager;
- import android.net.Proxy;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- import android.widget.Toast;
- import android.content.SharedPreferences;
- import com.example.gui.LocationActivity.MapOverlay;
- import com.google.android.maps.GeoPoint;
- import com.google.android.maps.ItemizedOverlay;
- 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 com.google.android.maps.Projection;
- public class ShowMapActivity extends MapActivity implements LocationListener {
- /** Called when the activity is first created. */
- LocationManager locationManager;
- Geocoder geocoder;
- TextView locationText;
- MapView map;
- MapController mapController;
- GeoPoint point1,point2;
- String autoReplyToken = "Request_Accepted";
- private List<Overlay> mapOverlays;
- public static final String PREFS_NAME = "Frndloc_file";
- private static final String TAG="checking";
- int latitude1,latitude2,longitude1,longitude2;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main8);
- map = (MapView)this.findViewById(R.id.mapview);
- map.setBuiltInZoomControls(true);
- mapController = map.getController();
- mapController.setZoom(8);
- SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
- String defValue="def_value";
- String latlon = settings.getString("friendlocation", defValue);
- boolean check=latlon.startsWith(defValue);
- locationManager = (LocationManager)this.getSystemService(LOCATION_SERVICE);
- geocoder = new Geocoder(this);
- Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
- latitude1 = (int)(location.getLatitude() * 1000000);
- longitude1 = (int)(location.getLongitude() * 1000000);
- point1 = new GeoPoint(latitude1,longitude1);
- friendlocation(latlon);
- mapOverlays = map.getOverlays();
- Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
- Markers itemizedoverlay = new Markers(drawable,this);
- OverlayItem overlayitem = new OverlayItem(point1, "Hi!", "Second!");
- OverlayItem overlayitem2 = new OverlayItem(point2, "Hello!", " fisrt one!");
- itemizedoverlay.addOverlay(overlayitem);
- itemizedoverlay.addOverlay(overlayitem2);
- mapOverlays.add(itemizedoverlay);
- /*}
- else{
- Toast.makeText(getBaseContext(),
- "You don't have friend location",
- Toast.LENGTH_SHORT).show();
- }*/
- DrawPath(point1, point2, Color.GREEN, map);
- }
- public class Markers extends ItemizedOverlay {
- private Context ctx;
- private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
- public Markers(Drawable defaultMarker, Context cont) {
- super(boundCenterBottom(defaultMarker));
- this.ctx = cont;
- // TODO Auto-generated constructor stub
- }
- @Override
- protected OverlayItem createItem(int i) {
- // TODO Auto-generated method stub
- return mOverlays.get(i);
- }
- @Override
- public boolean onTap(GeoPoint p, MapView mapView) {
- // TODO Auto-generated method stub
- return super.onTap(p, mapView);
- }
- @Override
- protected boolean onTap(int index) {
- // TODO Auto-generated method stub
- Toast.makeText(this.ctx, mOverlays.get(index).getTitle().toString()+", Latitude: "+mOverlays.get(index).getPoint().getLatitudeE6(), Toast.LENGTH_SHORT).show();
- return super.onTap(index);
- }
- @Override
- public int size() {
- // TODO Auto-generated method stub
- return mOverlays.size();
- }
- public void addOverlay(OverlayItem item) {
- mOverlays.add(item);
- setLastFocusedIndex(-1);
- populate();
- }
- public void clear() {
- mOverlays.clear();
- setLastFocusedIndex(-1);
- populate();
- }
- }
- public void friendlocation(String latlon) { //<9>
- boolean check=latlon.startsWith(autoReplyToken);
- int idx1,idx2;
- if(!check){
- idx1=0;
- idx2=1;
- }
- else{
- idx1=1;
- idx2=2;
- }
- String [] location = latlon.split("\\s+");
- double lat= Double.valueOf(location[idx1].trim()).doubleValue();
- double lon=Double.valueOf(location[idx2].trim()).doubleValue();
- latitude2 = (int)(lat * 1000000);
- longitude2 = (int)(lon * 1000000);
- point2 = new GeoPoint(latitude2,longitude2);
- }
- @Override
- protected boolean isRouteDisplayed() {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public void onProviderDisabled(String arg0) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onProviderEnabled(String provider) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- // TODO Auto-generated method stub
- }
- @Override
- protected void onResume() {
- super.onResume();
- locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10, this); //<7>
- }
- @Override
- protected void onPause() {
- super.onPause();
- locationManager.removeUpdates(this); //<8>
- }
- @Override
- public void onLocationChanged(Location arg0) {
- // TODO Auto-generated method stub
- }
- private void DrawPath(GeoPoint src,GeoPoint dest, int color, MapView mMapView01)
- {
- // connect to map web service
- StringBuilder urlString = new StringBuilder();
- urlString.append("http://maps.google.com/maps?f=d&hl=en");
- urlString.append("&saddr=");//from
- urlString.append( Double.toString((double)src.getLatitudeE6()/1.0E6 ));
- urlString.append(",");
- urlString.append( Double.toString((double)src.getLongitudeE6()/1.0E6 ));
- urlString.append("&daddr=");//to
- urlString.append( Double.toString((double)dest.getLatitudeE6()/1.0E6 ));
- urlString.append(",");
- urlString.append( Double.toString((double)dest.getLongitudeE6()/1.0E6 ));
- urlString.append("&ie=UTF8&0&om=0&output=kml");
- Log.d("xxx","URL="+urlString.toString());
- // get the kml (XML) doc. And parse it to get the coordinates(direction route).
- Document doc = null;
- HttpURLConnection urlConnection= null;
- URL url = null;
- try
- {
- url = new URL(urlString.toString());
- System.setProperty("http.proxyHost", "my_proxy");
- System.setProperty("http.proxyPort", "my_port");
- System.setProperty("http.proxyUser", "my_username");
- System.setProperty("http.proxyPassword", "my_password");
- urlConnection=(HttpURLConnection)url.openConnection();
- urlConnection.setRequestMethod("GET");
- urlConnection.setDoOutput(true);
- urlConnection.setDoInput(true);
- urlConnection.connect();
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- doc = db.parse(urlConnection.getInputStream());
- if(doc.getElementsByTagName("GeometryCollection").getLength()>0)
- {
- //String path = doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getNodeName();
- String path = doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getFirstChild().getNodeValue() ;
- Log.d("xxx","mukul");
- Log.d("xxx","path="+ path);
- String [] pairs = path.split(" ");
- String[] lngLat = pairs[0].split(","); // lngLat[0]=longitude lngLat[1]=latitude lngLat[2]=height
- // src
- GeoPoint startGP = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),(int)(Double.parseDouble(lngLat[0])*1E6));
- mMapView01.getOverlays().add(new MyOverLay(startGP,startGP,1));
- GeoPoint gp1;
- GeoPoint gp2 = startGP;
- for(int i=1;i<pairs.length;i++) // the last one would be crash
- {
- lngLat = pairs[i].split(",");
- gp1 = gp2;
- // watch out! For GeoPoint, first:latitude, second:longitude
- gp2 = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),(int)(Double.parseDouble(lngLat[0])*1E6));
- mMapView01.getOverlays().add(new MyOverLay(gp1,gp2,2,color));
- Log.d("xxx","pair:" + pairs[i]);
- }
- mMapView01.getOverlays().add(new MyOverLay(dest,dest, 3)); // use the default color
- }
- }
- catch (MalformedURLException e)
- {
- e.printStackTrace();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- catch (ParserConfigurationException e)
- {
- e.printStackTrace();
- }
- catch (SAXException e)
- {
- e.printStackTrace();
- }
- }
- public class MyOverLay extends Overlay
- {
- private GeoPoint gp1;
- private GeoPoint gp2;
- private int mRadius=6;
- private int mode=0;
- private int defaultColor;
- private String text="";
- private Bitmap img = null;
- public MyOverLay(GeoPoint gp1,GeoPoint gp2,int mode) // GeoPoint is a int. (6E)
- {
- this.gp1 = gp1;
- this.gp2 = gp2;
- this.mode = mode;
- defaultColor = 999; // no defaultColor
- }
- public MyOverLay(GeoPoint gp1,GeoPoint gp2,int mode, int defaultColor)
- {
- this.gp1 = gp1;
- this.gp2 = gp2;
- this.mode = mode;
- this.defaultColor = defaultColor;
- }
- public void setText(String t)
- {
- this.text = t;
- }
- public void setBitmap(Bitmap bitmap)
- {
- this.img = bitmap;
- }
- public int getMode()
- {
- return mode;
- }
- @Override
- public boolean draw
- (Canvas canvas, MapView mapView, boolean shadow, long when)
- {
- Projection projection = mapView.getProjection();
- if (shadow == false)
- {
- Paint paint = new Paint();
- paint.setAntiAlias(true);
- Point point = new Point();
- projection.toPixels(gp1, point);
- // mode=1:start
- if(mode==1)
- {
- if(defaultColor==999)
- paint.setColor(Color.BLUE);
- else
- paint.setColor(defaultColor);
- RectF oval=new RectF(point.x - mRadius, point.y - mRadius,
- point.x + mRadius, point.y + mRadius);
- // start point
- canvas.drawOval(oval, paint);
- }
- // mode=2:path
- else if(mode==2)
- {
- if(defaultColor==999)
- paint.setColor(Color.RED);
- else
- paint.setColor(defaultColor);
- Point point2 = new Point();
- projection.toPixels(gp2, point2);
- paint.setStrokeWidth(5);
- paint.setAlpha(120);
- canvas.drawLine(point.x, point.y, point2.x,point2.y, paint);
- }
- /* mode=3:end */
- else if(mode==3)
- {
- /* the last path */
- if(defaultColor==999)
- paint.setColor(Color.GREEN);
- else
- paint.setColor(defaultColor);
- Point point2 = new Point();
- projection.toPixels(gp2, point2);
- paint.setStrokeWidth(5);
- paint.setAlpha(120);
- canvas.drawLine(point.x, point.y, point2.x,point2.y, paint);
- RectF oval=new RectF(point2.x - mRadius,point2.y - mRadius,
- point2.x + mRadius,point2.y + mRadius);
- /* end point */
- paint.setAlpha(255);
- canvas.drawOval(oval, paint);
- }
- }
- return super.draw(canvas, mapView, shadow, when);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment