1

Googleマップに、ユーザーの現在の場所からユーザーがタップしたオーバーレイまでのルートを表示しようとしています。これは私のオーバーレイコードです

public class AddItemizedOverlay extends ItemizedOverlay<OverlayItem> {

   private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();

   private Context context;

   public AddItemizedOverlay(Drawable defaultMarker) {
        super(boundCenterBottom(defaultMarker));
   }



public AddItemizedOverlay(Drawable defaultMarker, Context context) {
        this(defaultMarker);
        this.context = context;
   }

   @Override
   public boolean onTouchEvent(MotionEvent event, MapView mapView)
   {   

       if (event.getAction() == 1) {
           GeoPoint geopoint = mapView.getProjection().fromPixels(
               (int) event.getX(),
               (int) event.getY());
           // latitude
           double lat = geopoint.getLatitudeE6() / 1E6;
           // longitude
           double lon = geopoint.getLongitudeE6() / 1E6;
          // Toast.makeText(context, "Lat: " + lat + ", Lon: "+lon, Toast.LENGTH_SHORT).show();
       }
       return false;
   } 



   @Override
   protected OverlayItem createItem(int i) {
      return mapOverlays.get(i);
   }

   @Override
   public int size() {
      return mapOverlays.size();
   }

  @Override
   protected boolean onTap(int index) {
      final OverlayItem item = mapOverlays.get(0);
        AlertDialog.Builder dialog = new AlertDialog.Builder(context);
        dialog.setTitle(item.getTitle());
        dialog.setMessage(item.getSnippet());
        dialog.setPositiveButton("Arahkan", new OnClickListener() {
            //arahkan atau direction 
            public void onClick(DialogInterface arg0, int arg1) {   
                // Getting intent data
                Intent i = getIntent();

                // Users current geo location
                String user_latitude = i.getStringExtra("user_latitude");
                String user_longitude = i.getStringExtra("user_longitude");

                // Geopoint to place on map
                //geoPoint = new GeoPoint((int) (Double.parseDouble(user_latitude) * 1E6),
                    //  (int) (Double.parseDouble(user_longitude) * 1E6));

                StringBuilder urlString = new StringBuilder();                      
                String saddr = newLocation.getLatitude(user_latitude)+","+newLocation.getLongitude(user_longitude);
                String daddr = (item.getPoint().getLatitudeE6()/1E6)+","+(item.getPoint().getLongitudeE6()/1E6); 
                urlString.append("http://maps.google.com/maps?f=d&hl=en"); 
                urlString.append("&saddr="+saddr); 
                urlString.append("&daddr="+daddr);
                Intent ii = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString.toString()));
                context.startActivity(i);
            }

            private Intent getIntent() {
                // TODO Auto-generated method stub
                return null;
            }
        });

     dialog.show();
     return true;
   }

   private MapView findViewById(int mapview2) {
    // TODO Auto-generated method stub
    return null;
}



public void addOverlay(OverlayItem overlay) {
      mapOverlays.add(overlay);

   }

   public void populateNow(){
       this.populate();
   }


}

私のコードの問題を修正したい人がいるなら、私にあなたの意見を教えてください。ありがとう。:)

4

0 に答える 0