public void drawInterest(Interest interest, List<Tag> tags) {

    // System.out.println(interest.getId());

    List<GeoPt> locations = interest.getLocations();

    if (locations.isEmpty()) return;

    if (locations.size() == 1) {

      // draw a marker
      String markerText = "";

      // coordinates
      double latitude = locations.get(0).getLatitude();
      double longitude = locations.get(0).getLongitude();

      // tags name
      ArrayList<String> listTagsName = new ArrayList<>();
      for (Long tagID : interest.getTagIds()) {
        for (Tag tag : tags) {
          if (tag.getId().equals(tagID)) {
            listTagsName.add(tag.getName());
          }
        }
      }

      if (!listTagsName.isEmpty()) {
        markerText += Joiner.on(", ").join(listTagsName);
      }

      // submitter
      UserAccount submitter = interest.getSubmitter();
      if (submitter != null) {
        markerText += "\n" + submitter.getUsername();
      }

      mMap.addMarker(
          new MarkerOptions().position(new LatLng(latitude, longitude)).title(markerText));

    } else {

      PolygonOptions options = new PolygonOptions();
      for (GeoPt geoPt : locations) {

        double latitude = geoPt.getLatitude();
        double longitude = geoPt.getLongitude();

        options.add(new LatLng(latitude, longitude));
      }
      int color = Color.parseColor(getColorOfInterest(interest, tags));
      options.fillColor(color);
      options.strokeColor(color);

      mMap.addPolygon(options);
    }
  }