Map markers (<150m and new marker on second row)
This commit is contained in:
parent
7d468b8868
commit
8dc2d7638f
2 changed files with 23 additions and 6 deletions
|
@ -280,9 +280,13 @@ public class MapMarkersHelper {
|
||||||
longitudes[i] = point.getLongitude();
|
longitudes[i] = point.getLongitude();
|
||||||
pointDescriptions.add(pointDescription);
|
pointDescriptions.add(pointDescription);
|
||||||
colorIndexes[i] = colorIndex;
|
colorIndexes[i] = colorIndex;
|
||||||
positions[i] = -1 - i;
|
positions[i] = 0 - i;
|
||||||
indexes[i] = 0;
|
indexes[i] = 0;
|
||||||
}
|
}
|
||||||
|
if (sortedMapMarkers.size() > 0) {
|
||||||
|
MapMarker firstMarker = sortedMapMarkers.get(0);
|
||||||
|
settings.updateMapMarker(firstMarker.getLatitude(), firstMarker.getLongitude(), firstMarker.pointDescription, firstMarker.colorIndex, -points.size());
|
||||||
|
}
|
||||||
settings.insertMapMarkers(latitudes, longitudes, pointDescriptions, colorIndexes, positions, indexes);
|
settings.insertMapMarkers(latitudes, longitudes, pointDescriptions, colorIndexes, positions, indexes);
|
||||||
readFromSettings();
|
readFromSettings();
|
||||||
normalizePositions();
|
normalizePositions();
|
||||||
|
|
|
@ -21,12 +21,14 @@ import net.osmand.plus.helpers.MapMarkerDialogHelper;
|
||||||
import net.osmand.plus.views.DirectionDrawable;
|
import net.osmand.plus.views.DirectionDrawable;
|
||||||
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
|
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
import net.osmand.util.MapUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class MapMarkersWidgetsFactory {
|
public class MapMarkersWidgetsFactory {
|
||||||
|
|
||||||
public static final int MIN_DIST_OK_VISIBLE = 40;
|
public static final int MIN_DIST_OK_VISIBLE = 40; // meters
|
||||||
|
public static final int MIN_DIST_2ND_ROW_SHOW = 150; // meters
|
||||||
|
|
||||||
private final MapActivity map;
|
private final MapActivity map;
|
||||||
private MapMarkersHelper helper;
|
private MapMarkersHelper helper;
|
||||||
|
@ -195,11 +197,21 @@ public class MapMarkersWidgetsFactory {
|
||||||
Float heading = map.getMapViewTrackingUtilities().getHeading();
|
Float heading = map.getMapViewTrackingUtilities().getHeading();
|
||||||
|
|
||||||
MapMarker marker = markers.get(0);
|
MapMarker marker = markers.get(0);
|
||||||
updateUI(loc, heading, marker, arrowImg, distText, okButton, addressText, true);
|
updateUI(loc, heading, marker, arrowImg, distText, okButton, addressText, true, customLocation != null);
|
||||||
|
|
||||||
if (markers.size() > 1) {
|
if (markers.size() > 1) {
|
||||||
marker = markers.get(1);
|
marker = markers.get(1);
|
||||||
updateUI(loc, heading, marker, arrowImg2nd, distText2nd, okButton2nd, addressText2nd, false);
|
if (loc != null) {
|
||||||
|
for (int i = 1; i < markers.size(); i++) {
|
||||||
|
MapMarker m = markers.get(i);
|
||||||
|
m.dist = (int) (MapUtils.getDistance(m.getLatitude(), m.getLongitude(),
|
||||||
|
loc.getLatitude(), loc.getLongitude()));
|
||||||
|
if (m.dist < MIN_DIST_2ND_ROW_SHOW && marker.dist > m.dist) {
|
||||||
|
marker = m;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateUI(loc, heading, marker, arrowImg2nd, distText2nd, okButton2nd, addressText2nd, false, customLocation != null);
|
||||||
updateVisibility(topBar2nd, true);
|
updateVisibility(topBar2nd, true);
|
||||||
} else {
|
} else {
|
||||||
updateVisibility(topBar2nd, false);
|
updateVisibility(topBar2nd, false);
|
||||||
|
@ -209,7 +221,8 @@ public class MapMarkersWidgetsFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateUI(LatLon loc, Float heading, MapMarker marker, ImageView arrowImg,
|
private void updateUI(LatLon loc, Float heading, MapMarker marker, ImageView arrowImg,
|
||||||
TextView distText, ImageButton okButton, TextView addressText, boolean firstLine) {
|
TextView distText, ImageButton okButton, TextView addressText,
|
||||||
|
boolean firstLine, boolean customLocation) {
|
||||||
float[] mes = new float[2];
|
float[] mes = new float[2];
|
||||||
if (loc != null && marker.point != null) {
|
if (loc != null && marker.point != null) {
|
||||||
Location.distanceBetween(marker.getLatitude(), marker.getLongitude(), loc.getLatitude(), loc.getLongitude(), mes);
|
Location.distanceBetween(marker.getLatitude(), marker.getLongitude(), loc.getLatitude(), loc.getLongitude(), mes);
|
||||||
|
@ -240,7 +253,7 @@ public class MapMarkersWidgetsFactory {
|
||||||
txt = "— " + map.getString(R.string.m);
|
txt = "— " + map.getString(R.string.m);
|
||||||
}
|
}
|
||||||
distText.setText(txt);
|
distText.setText(txt);
|
||||||
updateVisibility(okButton, loc != null && dist < MIN_DIST_OK_VISIBLE);
|
updateVisibility(okButton, !customLocation && loc != null && dist < MIN_DIST_OK_VISIBLE);
|
||||||
|
|
||||||
String descr;
|
String descr;
|
||||||
PointDescription pd = marker.getPointDescription(map);
|
PointDescription pd = marker.getPointDescription(map);
|
||||||
|
|
Loading…
Reference in a new issue