예제 #1
0
 public void onLocationChanged(Location location) {
   updateDistances(location);
   sortMarkerList();
   for (Marker ma : markerList) {
     ma.update(location);
   }
 }
예제 #2
0
  public void paint(PaintScreen dw) {
    /** radius is in KM. */
    range = view.getRadius() * 1000;
    /** Draw the radar */
    dw.setFill(true);
    dw.setColor(radarColor);
    dw.paintCircle(originX + RADIUS, originY + RADIUS, RADIUS);

    /** put the markers in it */
    float scale = range / RADIUS;

    DataHandler jLayer = view.getDataHandler();

    for (int i = 0; i < jLayer.getMarkerCount(); i++) {
      Marker pm = jLayer.getMarker(i);
      float x = pm.getLocationVector().x / scale;
      float y = pm.getLocationVector().z / scale;

      if (pm.isActive() && (x * x + y * y < RADIUS * RADIUS)) {
        dw.setFill(true);

        // For OpenStreetMap the color is changing based on the URL
        dw.setColor(pm.getColour());

        dw.paintRect(x + RADIUS - 1, y + RADIUS - 1, 2, 2);
      }
    }
  }
예제 #3
0
 public void updateDistances(Location location) {
   for (Marker ma : markerList) {
     float[] dist = new float[3];
     Location.distanceBetween(
         ma.getLatitude(),
         ma.getLongitude(),
         location.getLatitude(),
         location.getLongitude(),
         dist);
     ma.setDistance(dist[0]);
   }
 }
예제 #4
0
  public void updateActivationStatus(MixContext mixContext) {

    Hashtable<Class, Integer> map = new Hashtable<Class, Integer>();

    for (Marker ma : markerList) {

      Class<? extends Marker> mClass = ma.getClass();
      map.put(mClass, (map.get(mClass) != null) ? map.get(mClass) + 1 : 1);

      boolean belowMax = (map.get(mClass) <= ma.getMaxObjects());
      // boolean dataSourceSelected = mixContext.isDataSourceSelected(ma.getDatasource());

      ma.setActive((belowMax));
    }
  }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    dataView = MixView.getDataView();

    selectedItemURL = new Vector<String>();
    listViewMenu = new Vector<SpannableString>();
    DataHandler jLayer = dataView.getDataHandler();
    if (dataView.isFrozen() && jLayer.getMarkerCount() > 0) {
      selectedItemURL.add("search");
    }
    /*add all marker items to a title and a URL Vector*/
    for (int i = 0; i < jLayer.getMarkerCount(); i++) {
      Marker ma = jLayer.getMarker(i);
      if (ma.isActive()) {
        if (ma.getURL() != null) {
          /* Underline the title if website is available*/
          underlinedTitle = new SpannableString(ma.getTitle());
          underlinedTitle.setSpan(new UnderlineSpan(), 0, underlinedTitle.length(), 0);
          listViewMenu.add(underlinedTitle);
        } else {
          listViewMenu.add(new SpannableString(ma.getTitle()));
        }
        /*the website for the corresponding title*/
        if (ma.getURL() != null) selectedItemURL.add(ma.getURL());
        /*if no website is available for a specific title*/
        else selectedItemURL.add("");
      }

      if (dataView.isFrozen()) {

        TextView searchNotificationTxt = new TextView(this);
        searchNotificationTxt.setVisibility(View.VISIBLE);
        searchNotificationTxt.setText(
            getString(R.string.search_active_1)
                + " "
                + DataSourceList.getDataSourcesStringList()
                + getString(R.string.search_active_2));
        searchNotificationTxt.setWidth(MixView.getdWindow().getWidth());

        searchNotificationTxt.setPadding(10, 2, 0, 0);
        searchNotificationTxt.setBackgroundColor(Color.DKGRAY);
        searchNotificationTxt.setTextColor(Color.WHITE);

        getListView().addHeaderView(searchNotificationTxt);
      }

      setListAdapter(
          new ArrayAdapter<SpannableString>(
              this, android.R.layout.simple_list_item_1, listViewMenu));
      getListView().setTextFilterEnabled(true);
      break;
    }
  }
  private void doMixSearch(String query) {
    DataHandler jLayer = dataView.getDataHandler();
    if (!dataView.isFrozen()) {
      originalMarkerList = jLayer.getMarkerList();
      MixMap.originalMarkerList = jLayer.getMarkerList();
    }
    originalMarkerList = jLayer.getMarkerList();
    searchResultMarkers = new ArrayList<Marker>();
    Log.d("SEARCH-------------------0", "" + query);
    setSearchQuery(query);

    selectedItemURL = new Vector<String>();
    listViewMenu = new Vector<SpannableString>();
    for (int i = 0; i < jLayer.getMarkerCount(); i++) {
      Marker ma = jLayer.getMarker(i);

      if (ma.getTitle().toLowerCase().indexOf(searchQuery.toLowerCase()) != -1) {
        searchResultMarkers.add(ma);
        listViewMenu.add(new SpannableString(ma.getTitle()));
        /*the website for the corresponding title*/
        if (ma.getURL() != null) selectedItemURL.add(ma.getURL());
        /*if no website is available for a specific title*/
        else selectedItemURL.add("");
      }
    }
    if (listViewMenu.size() == 0) {
      Toast.makeText(this, getString(R.string.search_failed_notification), Toast.LENGTH_LONG)
          .show();
    } else {
      jLayer.setMarkerList(searchResultMarkers);
      dataView.setFrozen(true);
      finish();
      Intent intent1 = new Intent(this, MixListView.class);
      startActivityForResult(intent1, 42);
    }
  }
예제 #7
0
 @Override
 public int compareTo(Marker another) {
   Marker rm = (Marker) another;
   return this.getID().compareTo(rm.getID());
 }