예제 #1
0
  private void updateMapLocation(GeoPoint geoPoint) {
    Log.d(TAG, "updateMapLocation():  ");
    ItemizedOverlay<OverlayItem> locationOverlay;
    ResourceProxy resourceProxy =
        new DefaultResourceProxyImpl(getActivity().getApplicationContext());

    if (geoPoint != null) {
      ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
      items.add(new OverlayItem("Here", "SampleDescription", geoPoint));

      locationOverlay =
          new ItemizedIconOverlay<OverlayItem>(
              items,
              new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
                @Override
                public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
                  return true;
                }

                @Override
                public boolean onItemLongPress(final int index, final OverlayItem item) {
                  return false;
                }
              },
              resourceProxy);

      mapView.getOverlays().clear();
      mapView.getOverlays().add(locationOverlay);
      mapView.getController().setCenter(geoPoint);
      mapView.invalidate();
    } else {
      mapView.getOverlays().clear();
      mapView.invalidate();
    }
  }
예제 #2
0
  private boolean onUp(MotionEvent event, MapView mapView) {
    if (this.onTargetClickListener != null && this.isAClick) {
      this.clickUpCoords[0] = event.getX();
      this.clickUpCoords[1] = event.getY();

      if (Math.abs(this.clickUpCoords[0] - this.clickDownCoords[0]) < 10
          && Math.abs(this.clickUpCoords[1] - this.clickDownCoords[1]) < 10) {
        IGeoPoint igeoPoint =
            mapView.getProjection().fromPixels((int) event.getX(), (int) event.getY());
        GeoPoint geoPoint = new GeoPoint(igeoPoint.getLatitudeE6(), igeoPoint.getLongitudeE6());
        if (event.getEventTime() - this.clickDownTime
                < android.view.ViewConfiguration.getLongPressTimeout()
            && isEventOnTarget(event, mapView)) {
          this.lockPosition = true;
          this.onTargetClickListener.onClick(getMyLocation());
          return true;
        } else if (this.lockPosition == false
            && event.getEventTime() - this.clickDownTime
                >= 0) { // android.view.ViewConfiguration.getP) {
          setLocation(geoPoint);
          mapView.invalidate();
          return true;
        }
      }
      this.isAClick = false;
    }
    return false;
  }
 @Override
 public void onLocationUpdated(GeoPoint currentLoc) {
   if (isPathToBeDisplayed && loadMapTask.isCompleted()) {
     routeTo(destinationNodeId, isWalkOnly, currentLoc, true);
     isPathToBeDisplayed = false;
     destinationNodeId = -1;
     mapView.invalidate();
   }
 }
예제 #4
0
 /** Clear all schedules on the map */
 public void clearSchedules() {
   randomStudent = null;
   OverlayManager om = mapView.getOverlayManager();
   om.clear();
   scheduleOverlay.clear();
   buildingOverlay.removeAllItems();
   om.addAll(scheduleOverlay);
   om.add(buildingOverlay);
   mapView.invalidate();
 }
예제 #5
0
 public synchronized void onLocationChanged(Location location) {
   //		Log.i(TAG, "onLocationChanged " +location);
   if (isBetterLocation(location, lastFix)) {
     lastFix = location;
     if (runOnFirstFix != null) {
       runOnFirstFix.run();
       runOnFirstFix = null;
     }
     mapView.invalidate();
   }
 }
예제 #6
0
  @Override
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View layout = inflater.inflate(R.layout.fragment_osm_map, container, false);
    map = (MapView) layout.findViewById(R.id.osmmap);
    map.setTileSource(TileSourceFactory.MAPNIK);
    // map.setBuiltInZoomControls(true);
    map.setMultiTouchControls(true);

    // Default location and zoom level
    IMapController mapController = map.getController();
    mapController.setZoom(12);
    GeoPoint startPoint = new GeoPoint(37.4333, 127.1500);
    mapController.setCenter(startPoint);
    // MyLocationNewOverlay mLocationOverlay = new MyLocationNewOverlay(getActivity(), new
    // GpsMyLocationProvider(getActivity()),map);
    // map.getOverlays().add(mLocationOverlay);

    Marker startMarker = new Marker(map);
    startMarker.setPosition(startPoint);
    startMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
    map.getOverlays().add(startMarker);

    RoadManager roadManager = new OSRMRoadManager(getActivity());
    waypoints = new ArrayList<GeoPoint>();
    waypoints.add(startPoint);
    GeoPoint endPoint = new GeoPoint(37.4314, 127.1297);
    waypoints.add(endPoint);

    Location location = mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

    myLocationOverlay = new DirectedLocationOverlay(getActivity());
    map.getOverlays().add(myLocationOverlay);
    myLocationOverlay.setLocation(new GeoPoint(location));
    map.invalidate();

    handler =
        new Handler() {
          @Override
          public void handleMessage(Message msg) {
            GeoPoint geo = (GeoPoint) msg.obj;
            map.getController().animateTo(geo);
            map.invalidate();
          }
        };

    return layout;
  }
예제 #7
0
 @Override
 protected void onPostExecute(String s) {
   Polyline roadOverlay = RoadManager.buildRoadOverlay(road, context);
   map.getOverlays().add(roadOverlay);
   Drawable nodeIcon = getResources().getDrawable(R.drawable.marker_node);
   for (int i = 0; i < road.mNodes.size(); i++) {
     RoadNode node = road.mNodes.get(i);
     Marker nodeMarker = new Marker(map);
     nodeMarker.setPosition(node.mLocation);
     nodeMarker.setIcon(nodeIcon);
     nodeMarker.setTitle("Step " + i);
     nodeMarker.setSnippet(node.mInstructions);
     nodeMarker.setSubDescription(Road.getLengthDurationText(node.mLength, node.mDuration));
     map.getOverlays().add(nodeMarker);
   }
   map.invalidate();
 }
예제 #8
0
  private void updateLocation(String devId) {
    LocationModel lm = LocationModel.getInstance();
    List<Location> locList = lm.getLocations(devId);
    Location prevLoc = null;
    Location currLoc = locList.get(locList.size() - 1);

    if (locList.size() > 1) {
      prevLoc = locList.get(locList.size() - 2);
      GeoPoint p = new GeoPoint(prevLoc.getLatitude(), prevLoc.getLongitude());
      prevLocationsOverlay.addItem(p, prevLoc.getInfo(), prevLoc.getInfo());
    }

    MapView mapView = (MapView) findViewById(R.id.mapview);

    GeoPoint myPoint1 = new GeoPoint(currLoc.getLatitude(), currLoc.getLongitude());
    currLocationOverlay.removeAllItems();
    currLocationOverlay.addItem(myPoint1, currLoc.getInfo(), currLoc.getInfo());

    mapView.getController().setZoom(13);
    mapView.getController().animateTo(myPoint1);
    mapView.invalidate();
  }
예제 #9
0
 public void moveToEventPosition(final MotionEvent event, final MapView mapView) {
   final Projection pj = mapView.getProjection();
   mPosition = (GeoPoint) pj.fromPixels((int) event.getX(), (int) event.getY());
   mapView.invalidate();
 }
예제 #10
0
  @TargetApi(Build.VERSION_CODES.LOLLIPOP)
  @Override
  public boolean longPressHelper(GeoPoint p) {
    // DO NOTHING FOR NOW:

    // MotionEvent e=null;
    /*  Projection proj = mapView.getProjection();
    //GeoPoint point = (GeoPoint) proj.fromPixels((int) mapView.getX(), (int) mapView.getY());
    proj = mapView.getProjection();

    p = (GeoPoint) proj.fromPixels((int) mapView.getX(), (int) mapView.getY());

    int lat= p.getLatitudeE6();
    int lgn= p.getLongitudeE6();*/

    double lg = p.getLongitude();
    double lt = p.getLatitude();
    // Toast.makeText(this, lat, Toast.LENGTH_SHORT).show();
    Intent i = new Intent(MainActivity.this, FormularioActivity.class);
    String lat2 = (String.valueOf(lg));
    String lgn2 = (String.valueOf(lt));
    i.putExtra("lat", lat2);
    // i.putExtra("lat",lgn2);
    // startActivity(i);
    /*    IMapController mapViewController = mapView.getController();
    mapViewController.setZoom(10);
    mapViewController.setCenter(ROSARIO);*/

    Marker GeoMarker = new Marker(mapView);
    GeoMarker.setPosition(new GeoPoint(lt, lg));
    /*int lat= 30;
    int lng=20;
    startMarker.setPosition(new GeoPoint(lat, lng));*/

    GeoMarker.setIcon(getDrawable(R.drawable.icono));
    GeoMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
    InfoWindow infoWindow =
        new InfoWindow(R.layout.bubble_layout, mapView) {
          @Override
          public void onOpen(Object arg0) {
            LinearLayout layout = (LinearLayout) mView.findViewById(R.id.bubble_layout);
            Button btnMoreInfo = (Button) mView.findViewById(R.id.button);
            TextView txtTitle = (TextView) mView.findViewById(R.id.TV_title);
            TextView txtDescription = (TextView) mView.findViewById(R.id.bubble_description);
            TextView txtSubdescription = (TextView) mView.findViewById(R.id.bubble_subdescription);

            /* txtTitle.setText("Title of my marker");
             txtDescription.setText("Click here to view details!");
             txtSubdescription.setText("You can also edit the subdescription");
            */ layout.setOnClickListener(
                new View.OnClickListener() {
                  public void onClick(View v) {
                    // Override Marker's onClick behaviour here
                  }
                });
          }

          @Override
          public void onClose() {}
        };

    GeoMarker.setInfoWindow(infoWindow);

    GeoMarker.setTitle("Fabrica");
    GeoMarker.setSnippet("chicos");
    mapView.getOverlays().add(GeoMarker);
    mapView.invalidate();

    // Toast.makeText(this, "LONGGGG Tapped", Toast.LENGTH_SHORT).show();

    return false;
  }
예제 #11
0
  /**
   * @see
   *     http://www.netmite.com/android/mydroid/cupcake/development/samples/Compass/src/com/example/android/compass/CompassActivity.java
   * @see
   *     http://stackoverflow.com/questions/6676377/azimuth-found-with-sensor-type-magnetic-field-much-more-unstable-than-sensor-typ
   * @see http
   *     ://books.google.fr/books?id=c59gCUniP5gC&pg=PA639&lpg=PA639&dq=TYPE_MAGNETIC_FIELD+mapView&source=bl&ots=4wT7sgdYpa&sig=zgNnk9jrZpVfPZRVHtm5kobgiTQ
   *     &hl=fr&sa=X&ei=oy53T9LLD4HB8QOLxMm6DQ&ved=0CD4Q6AEwAg#v=onepage&q=TYPE_MAGNETIC_FIELD%20mapView&f=false
   */
  @Override
  public void onSensorChanged(SensorEvent event) {
    int type = event.sensor.getType();
    // if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) {
    // if (Log.isLoggable(TAG, Log.DEBUG)) Log.d(TAG, "Could not read SENSOR_STATUS_UNRELIABLE for
    // sennsor " + type);
    // return;
    // }
    float[] data = event.values;
    if (type == Sensor.TYPE_ACCELEROMETER) {
      // alpha is calculated as t / (t + dT)
      // with t, the low-pass filter's time-constant
      // and dT, the event delivery rate
      // final float alpha = 0.9f;
      // gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
      // gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
      // gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

      acceleration[0] = data[0] - gravity[0];
      acceleration[1] = data[1] - gravity[1];
      acceleration[2] = data[2] - gravity[2];
    } else if (type == Sensor.TYPE_MAGNETIC_FIELD) {
      this.sensorMagneticData = data;
    } else if (type == Sensor.TYPE_ORIENTATION) {
      int oldAzimut = this.azimuth;
      this.azimuth = Math.round(event.values[0]);
      if (oldAzimut != this.azimuth) {
        // TODO
        mapView.invalidate();
      }
      return;
    } else {
      // we should not be here.
      return;
    }
    if (true) {

      float[] matrixRotation = new float[16];
      float[] matrixInclination = new float[16];
      SensorManager.getRotationMatrix(
          matrixRotation, matrixInclination, acceleration, sensorMagneticData);
      // float[] outR = new float[16];
      // SensorManager.remapCoordinateSystem(matrixRotation, SensorManager.AXIS_X,
      // SensorManager.AXIS_Z, outR);
      float[] mOrientation = new float[3];
      SensorManager.getOrientation(matrixRotation, mOrientation);
      // Convert the azimuth to degrees in 0.5 degree resolution.
      int newAzimuth = Math.round(Math.round(Math.toDegrees(mOrientation[0])));
      // Adjust the range: 0 < range <= 360 (from: -180 < range <= 180).
      // newAzimuth = (newAzimuth + 360) % 360;
      // alternative newAzimuth = newAzimuth >= 0 ? newAzimuth : newAzimuth + 360;
      //
      if (azimuth != newAzimuth) {
        azimuth = newAzimuth;
        mapView.invalidate();
      }

      // float incl = SensorManager.getInclination(matrixInclination);

    }
  }