Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
38619fa2af
16 changed files with 4100 additions and 85 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,4 +1,5 @@
|
|||
*.render.xml
|
||||
*.template_render.xml
|
||||
*.map_styles_presets.xml
|
||||
routing*.xml
|
||||
rendering_types.xml
|
||||
|
|
|
@ -1,61 +1,76 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
|
||||
<LinearLayout
|
||||
<net.osmand.plus.views.OsmandMapTileView
|
||||
android:id="@+id/MapView"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="@color/color_white">
|
||||
android:layout_height="300dp"
|
||||
android:contentDescription="@string/map_view"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/Icon"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="centerCrop"/>
|
||||
<ScrollView
|
||||
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent" >
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:orientation="horizontal" >
|
||||
android:background="@color/color_white"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/HeaderText"
|
||||
android:layout_width="0dp"
|
||||
<ImageView
|
||||
android:id="@+id/Icon"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_weight="1"
|
||||
android:textSize="19sp" />
|
||||
android:scaleType="centerCrop" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/HeaderText"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical"
|
||||
android:textSize="19sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/AdditionalText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:textColor="@color/sherpafy_add_text"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/AdditionalText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:id="@+id/Text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:singleLine="false"
|
||||
android:textColor="@color/sherpafy_add_text"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<WebView
|
||||
android:id="@+id/Description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginTop="8dp" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/Text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:singleLine="false"
|
||||
android:textColor="@color/sherpafy_add_text"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<WebView android:id="@+id/Description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"/>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</ScrollView>
|
||||
</LinearLayout>
|
|
@ -22,7 +22,7 @@
|
|||
android:layout_height="0dp"
|
||||
/>
|
||||
|
||||
<android.support.v4.view.ViewPager
|
||||
<net.osmand.plus.CustomPager
|
||||
android:id="@+id/pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
|
|
27
OsmAnd/src/net/osmand/plus/CustomPager.java
Normal file
27
OsmAnd/src/net/osmand/plus/CustomPager.java
Normal file
|
@ -0,0 +1,27 @@
|
|||
package net.osmand.plus;
|
||||
|
||||
import net.osmand.plus.views.OsmandMapTileView;
|
||||
import android.content.Context;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
public class CustomPager extends ViewPager {
|
||||
|
||||
public CustomPager(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public CustomPager(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
|
||||
if (v instanceof OsmandMapTileView) {
|
||||
return true;
|
||||
}
|
||||
return super.canScroll(v, checkV, dx, x, y);
|
||||
}
|
||||
|
||||
}
|
|
@ -9,7 +9,6 @@ import java.util.Map;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.actionbarsherlock.app.ActionBar;
|
||||
import net.osmand.Location;
|
||||
import net.osmand.StateChangedListener;
|
||||
import net.osmand.access.AccessibilityPlugin;
|
||||
|
@ -30,8 +29,8 @@ import net.osmand.plus.OsmandSettings;
|
|||
import net.osmand.plus.PoiFilter;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.TargetPointsHelper;
|
||||
import net.osmand.plus.Version;
|
||||
import net.osmand.plus.TargetPointsHelper.TargetPoint;
|
||||
import net.osmand.plus.Version;
|
||||
import net.osmand.plus.activities.search.SearchActivity;
|
||||
import net.osmand.plus.base.FailSafeFuntions;
|
||||
import net.osmand.plus.base.MapViewTrackingUtilities;
|
||||
|
|
|
@ -6,9 +6,6 @@ import java.util.List;
|
|||
|
||||
import net.osmand.Location;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.binary.BinaryMapRouteReaderAdapter.RouteRegion;
|
||||
import net.osmand.binary.BinaryMapRouteReaderAdapter.RouteTypeRule;
|
||||
import net.osmand.binary.RouteDataObject;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.plus.ApplicationMode;
|
||||
import net.osmand.plus.GPXUtilities.GPXFile;
|
||||
|
|
|
@ -60,6 +60,8 @@ import android.view.Window;
|
|||
import android.widget.TextView;
|
||||
|
||||
import com.actionbarsherlock.app.ActionBar;
|
||||
import com.actionbarsherlock.app.SherlockActivity;
|
||||
import com.actionbarsherlock.app.SherlockFragmentActivity;
|
||||
|
||||
public class SherpafyCustomization extends OsmAndAppCustomization {
|
||||
|
||||
|
@ -501,7 +503,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
|
|||
}
|
||||
}
|
||||
|
||||
public void showFavoriteDialog(MapActivity mapActivity, StageInformation stage, StageFavorite sf) {
|
||||
public void showFavoriteDialog(SherlockFragmentActivity mapActivity, StageInformation stage, StageFavorite sf) {
|
||||
Bundle bl = new Bundle();
|
||||
bl.putInt(SherpafyFavoriteFragment.STAGE_PARAM, stage.getOrder());
|
||||
bl.putString(SherpafyFavoriteFragment.TOUR_PARAM, stage.getTour().getId());
|
||||
|
@ -620,7 +622,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
|
|||
|
||||
@Override
|
||||
public void createLayers(OsmandMapTileView mapView, MapActivity activity) {
|
||||
mapView.addLayer(new StageFavoritesLayer(app), 4.1f);
|
||||
mapView.addLayer(new StageFavoritesLayer(app, null), 4.1f);
|
||||
}
|
||||
|
||||
public boolean isWaypointGroupVisible(int waypointType, RouteCalculationResult route) {
|
||||
|
|
|
@ -127,7 +127,8 @@ public class SherpafyStageFragment extends SherlockFragment {
|
|||
if (stage != null) {
|
||||
mTabsAdapter.addTab(tabHost.newTabSpec("INFO").setIndicator(getString(R.string.sherpafy_stage_tab_info)),
|
||||
SherpafyStageInfoFragment.class);
|
||||
if (!stage.getItinerary().equals("")) {
|
||||
if (!stage.getItinerary().equals("") &&
|
||||
(stage.getGpx() != null || stage.getStartPoint() != null)) {
|
||||
mTabsAdapter.addTab(
|
||||
tabHost.newTabSpec("ROUTE").setIndicator(getString(R.string.sherpafy_stage_tab_route)),
|
||||
SherpafyStageItineraryFragment.class);
|
||||
|
|
|
@ -4,6 +4,7 @@ import net.osmand.plus.OsmAndFormatter;
|
|||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.sherpafy.TourInformation.StageInformation;
|
||||
import net.osmand.plus.views.OsmandMapTileView;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -24,6 +25,7 @@ public class SherpafyStageInfoFragment extends SherlockFragment {
|
|||
protected StageInformation stage;
|
||||
protected TourInformation tour;
|
||||
private View view;
|
||||
protected OsmandMapTileView osmandMapTileView;
|
||||
|
||||
public SherpafyStageInfoFragment() {
|
||||
}
|
||||
|
@ -64,11 +66,14 @@ public class SherpafyStageInfoFragment extends SherlockFragment {
|
|||
TextView additional = (TextView) view.findViewById(R.id.AdditionalText);
|
||||
TextView text = (TextView) view.findViewById(R.id.Text);
|
||||
TextView header = (TextView) view.findViewById(R.id.HeaderText);
|
||||
osmandMapTileView = (OsmandMapTileView) view.findViewById(R.id.MapView);
|
||||
updateView(description, icon, additional, text, header);
|
||||
return view;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
protected void updateView(WebView description, ImageView icon, TextView additional, TextView text, TextView header) {
|
||||
if (stage.getImageBitmap() != null) {
|
||||
icon.setImageBitmap(stage.getImageBitmap());
|
||||
|
|
|
@ -1,16 +1,53 @@
|
|||
package net.osmand.plus.sherpafy;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.osmand.data.RotatedTileBox;
|
||||
import net.osmand.map.MapTileDownloader.DownloadRequest;
|
||||
import net.osmand.map.MapTileDownloader.IMapDownloaderCallback;
|
||||
import net.osmand.plus.GPXUtilities.GPXFile;
|
||||
import net.osmand.plus.GPXUtilities.WptPt;
|
||||
import net.osmand.plus.GPXUtilities;
|
||||
import net.osmand.plus.OsmAndFormatter;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.render.MapVectorLayer;
|
||||
import net.osmand.plus.resources.ResourceManager;
|
||||
import net.osmand.plus.views.GPXLayer;
|
||||
import net.osmand.plus.views.MapTextLayer;
|
||||
import android.os.AsyncTask;
|
||||
import android.view.View;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class SherpafyStageItineraryFragment extends SherpafyStageInfoFragment {
|
||||
public class SherpafyStageItineraryFragment extends SherpafyStageInfoFragment implements IMapDownloaderCallback {
|
||||
|
||||
private static final boolean HIDE_ITINERARY_IMG = true;
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
app.getResourceManager().getMapTileDownloader().removeDownloaderCallback(this);
|
||||
}
|
||||
|
||||
protected void updateView(WebView description, ImageView icon, TextView additional, TextView text, TextView header) {
|
||||
if (stage.getItineraryBitmap() != null) {
|
||||
app.getResourceManager().getMapTileDownloader().addDownloaderCallback(this);
|
||||
osmandMapTileView.setVisibility(View.VISIBLE);
|
||||
osmandMapTileView.removeAllLayers();
|
||||
MapVectorLayer mapVectorLayer = new MapVectorLayer(null);
|
||||
MapTextLayer mapTextLayer = new MapTextLayer();
|
||||
mapTextLayer.setAlwaysVisible(true);
|
||||
// 5.95 all labels
|
||||
osmandMapTileView.addLayer(mapTextLayer, 5.95f);
|
||||
osmandMapTileView.addLayer(mapVectorLayer, 0.5f);
|
||||
final GPXLayer gpxLayer = new GPXLayer();
|
||||
gpxLayer.setGivenGpx(stage.getGpx());
|
||||
osmandMapTileView.addLayer(gpxLayer, 0.9f);
|
||||
osmandMapTileView.addLayer(new StageFavoritesLayer(app, stage), 4.1f);
|
||||
osmandMapTileView.setMainLayer(mapVectorLayer);
|
||||
mapVectorLayer.setVisible(true);
|
||||
calculateLatLon();
|
||||
if (stage.getItineraryBitmap() != null && !HIDE_ITINERARY_IMG) {
|
||||
icon.setImageBitmap(stage.getItineraryBitmap());
|
||||
} else {
|
||||
icon.setVisibility(View.GONE);
|
||||
|
@ -28,7 +65,71 @@ public class SherpafyStageItineraryFragment extends SherpafyStageInfoFragment {
|
|||
( h == 0 ? "" : h + " " + app.getString(R.string.int_hour) + " ") +
|
||||
( min == 0 ? "" : min + " " + app.getString(R.string.int_min))+ "<h4/>";
|
||||
}
|
||||
description.loadData("<html><body>" + ins + stage.getItinerary() + "</body></html", "text/html; charset=utf-8",
|
||||
String content = HIDE_ITINERARY_IMG ? "" : stage.getItinerary();
|
||||
description.loadData("<html><body>" + ins + content + "</body></html", "text/html; charset=utf-8",
|
||||
"utf-8");
|
||||
|
||||
new AsyncTask<Void, Void, Void>() {
|
||||
|
||||
private GPXFile gpx;
|
||||
@Override
|
||||
protected Void doInBackground(Void... params) {
|
||||
gpx = GPXUtilities.loadGPXFile(app, stage.gpxFile);
|
||||
return null;
|
||||
}
|
||||
protected void onPostExecute(Void result) {
|
||||
gpxLayer.setGivenGpx(gpx);
|
||||
calculateLatLon();
|
||||
osmandMapTileView.refreshMap();
|
||||
};
|
||||
}.execute((Void)null);
|
||||
}
|
||||
|
||||
protected void calculateLatLon() {
|
||||
|
||||
WptPt st = stage.getGpx() == null ? null : stage.getGpx().findPointToShow();
|
||||
double llat = st == null ? stage.getStartPoint().getLatitude() : st.lat;
|
||||
double llon = st == null ? stage.getStartPoint().getLongitude() : st.lon;
|
||||
double left = llon, right = llon;
|
||||
double top = llat, bottom = llat;
|
||||
if (stage.getGpx() != null) {
|
||||
for (List<WptPt> list : stage.getGpx().proccessPoints()) {
|
||||
for (WptPt l : list) {
|
||||
left = Math.min(left, l.getLongitude());
|
||||
right = Math.max(right, l.getLongitude());
|
||||
top = Math.max(top, l.getLatitude());
|
||||
bottom = Math.min(bottom, l.getLatitude());
|
||||
}
|
||||
}
|
||||
}
|
||||
osmandMapTileView.setIntZoom(15);
|
||||
RotatedTileBox tb = new RotatedTileBox(osmandMapTileView.getCurrentRotatedTileBox());
|
||||
tb.setPixelDimensions(3 * tb.getPixWidth() / 4, 3 * tb.getPixHeight() / 4);
|
||||
double clat = bottom / 2 + top / 2;
|
||||
double clon = left / 2 + right / 2;
|
||||
tb.setLatLonCenter(clat, clon);
|
||||
while (tb.getZoom() >= 7 && (!tb.containsLatLon(top, left) || !tb.containsLatLon(bottom, right))) {
|
||||
tb.setZoom(tb.getZoom() - 1);
|
||||
}
|
||||
osmandMapTileView.setLatLon(tb.getCenterLatLon().getLatitude(), tb.getCenterLatLon().getLongitude());
|
||||
osmandMapTileView.setComplexZoom(tb.getZoom(), osmandMapTileView.getSettingsZoomScale());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
osmandMapTileView.refreshMap(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tileDownloaded(DownloadRequest request) {
|
||||
if(request != null && !request.error && request.fileToSave != null){
|
||||
ResourceManager mgr = app.getResourceManager();
|
||||
mgr.tileDownloaded(request);
|
||||
}
|
||||
if(request == null || !request.error){
|
||||
osmandMapTileView.tileDownloaded(request);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,20 +4,36 @@ import java.util.ArrayList;
|
|||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.actionbarsherlock.app.SherlockFragmentActivity;
|
||||
|
||||
import android.graphics.PointF;
|
||||
import net.osmand.data.LocationPoint;
|
||||
import net.osmand.data.RotatedTileBox;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.sherpafy.TourInformation.StageFavorite;
|
||||
import net.osmand.plus.sherpafy.TourInformation.StageInformation;
|
||||
import net.osmand.plus.views.FavoritesLayer;
|
||||
import net.osmand.plus.views.OsmandMapTileView;
|
||||
|
||||
public class StageFavoritesLayer extends FavoritesLayer {
|
||||
|
||||
private OsmandApplication app;
|
||||
private StageInformation givenStage;
|
||||
private ArrayList<StageFavorite> cachedFavorites;
|
||||
|
||||
public StageFavoritesLayer(OsmandApplication app){
|
||||
public StageFavoritesLayer(OsmandApplication app, StageInformation givenStage) {
|
||||
this.app = app;
|
||||
this.givenStage = givenStage;
|
||||
if (givenStage != null) {
|
||||
cachedFavorites = new ArrayList<StageFavorite>();
|
||||
for (Object o : givenStage.getFavorites()) {
|
||||
if (o instanceof StageFavorite) {
|
||||
StageFavorite sf = (StageFavorite) o;
|
||||
cachedFavorites.add(sf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected Class<? extends LocationPoint> getFavoriteClass() {
|
||||
|
@ -29,6 +45,10 @@ public class StageFavoritesLayer extends FavoritesLayer {
|
|||
}
|
||||
|
||||
protected List<? extends LocationPoint> getPoints() {
|
||||
if(cachedFavorites != null) {
|
||||
return cachedFavorites;
|
||||
|
||||
}
|
||||
List<StageFavorite> fs = ((SherpafyCustomization)app.getAppCustomization()).getWaypoints();
|
||||
if(fs == null) {
|
||||
return Collections.emptyList();
|
||||
|
@ -42,8 +62,13 @@ public class StageFavoritesLayer extends FavoritesLayer {
|
|||
getFavoriteFromPoint(tileBox, point, favs);
|
||||
if (favs.size() > 0){
|
||||
SherpafyCustomization customization = (SherpafyCustomization) app.getAppCustomization();
|
||||
customization.showFavoriteDialog(app.getMapActivity(), customization.getSelectedStage(), (StageFavorite)favs.get(0) );
|
||||
return true;
|
||||
if (view.getContext() instanceof SherlockFragmentActivity) {
|
||||
customization
|
||||
.showFavoriteDialog((SherlockFragmentActivity) view.getContext(),
|
||||
givenStage != null ? givenStage : customization.getSelectedStage(),
|
||||
(StageFavorite) favs.get(0));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -1,25 +1,13 @@
|
|||
package net.osmand.plus.sherpafy;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import net.osmand.IProgress;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.plus.GPXUtilities.GPXFile;
|
||||
import net.osmand.plus.GPXUtilities.WptPt;
|
||||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||
import net.osmand.plus.ApplicationMode;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.TargetPointsHelper;
|
||||
import net.osmand.plus.activities.DownloadIndexActivity;
|
||||
import net.osmand.plus.sherpafy.TourInformation.StageFavorite;
|
||||
import net.osmand.plus.sherpafy.TourInformation.StageInformation;
|
||||
import net.osmand.util.Algorithms;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.AlertDialog.Builder;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnClickListener;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.res.Configuration;
|
||||
|
|
|
@ -8,6 +8,7 @@ import net.osmand.access.AccessibleToast;
|
|||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.QuadRect;
|
||||
import net.osmand.data.RotatedTileBox;
|
||||
import net.osmand.plus.GPXUtilities.GPXFile;
|
||||
import net.osmand.plus.GPXUtilities.WptPt;
|
||||
import net.osmand.plus.GpxSelectionHelper;
|
||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
||||
|
@ -65,6 +66,10 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
|
||||
private OsmandRenderer osmandRenderer;
|
||||
|
||||
private List<List<WptPt>> points;
|
||||
private GPXFile gpx;
|
||||
|
||||
|
||||
// private Drawable favoriteIcon;
|
||||
|
||||
|
||||
|
@ -160,16 +165,21 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
|
||||
@Override
|
||||
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {
|
||||
List<SelectedGpxFile> selectedGPXFiles = selectedGpxHelper.getSelectedGPXFiles();
|
||||
cache.clear();
|
||||
if (!selectedGPXFiles.isEmpty()) {
|
||||
drawSelectedFilesSegments(canvas, tileBox, selectedGPXFiles, settings);
|
||||
canvas.rotate(-tileBox.getRotate(), tileBox.getCenterPixelX(), tileBox.getCenterPixelY());
|
||||
drawSelectedFilesSplits(canvas, tileBox, selectedGPXFiles, settings);
|
||||
drawSelectedFilesPoints(canvas, tileBox, selectedGPXFiles);
|
||||
}
|
||||
if(textLayer.isVisible()) {
|
||||
textLayer.putData(this, cache);
|
||||
if(points != null) {
|
||||
updatePaints(0, false, settings, tileBox);
|
||||
drawSegments(canvas, tileBox, points);
|
||||
} else {
|
||||
List<SelectedGpxFile> selectedGPXFiles = selectedGpxHelper.getSelectedGPXFiles();
|
||||
cache.clear();
|
||||
if (!selectedGPXFiles.isEmpty()) {
|
||||
drawSelectedFilesSegments(canvas, tileBox, selectedGPXFiles, settings);
|
||||
canvas.rotate(-tileBox.getRotate(), tileBox.getCenterPixelX(), tileBox.getCenterPixelY());
|
||||
drawSelectedFilesSplits(canvas, tileBox, selectedGPXFiles, settings);
|
||||
drawSelectedFilesPoints(canvas, tileBox, selectedGPXFiles);
|
||||
}
|
||||
if (textLayer != null && textLayer.isVisible()) {
|
||||
textLayer.putData(this, cache);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -440,6 +450,12 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
}
|
||||
|
||||
|
||||
public void setGivenGpx(GPXFile gpx) {
|
||||
this.gpx = gpx;
|
||||
this.points = (gpx == null ? null : gpx.proccessPoints());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -24,6 +24,8 @@ public class MapTextLayer extends OsmandMapLayer {
|
|||
public static final int TEXT_LINES = 3;
|
||||
private Paint paintTextIcon;
|
||||
private OsmandMapTileView view;
|
||||
private boolean alwaysVisible;
|
||||
|
||||
|
||||
|
||||
public interface MapTextProvider<T> {
|
||||
|
@ -47,14 +49,22 @@ public class MapTextLayer extends OsmandMapLayer {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean isAlwaysVisible() {
|
||||
return alwaysVisible;
|
||||
}
|
||||
|
||||
public void setAlwaysVisible(boolean alwaysVisible) {
|
||||
this.alwaysVisible = alwaysVisible;
|
||||
}
|
||||
|
||||
public boolean isVisible() {
|
||||
return view.getSettings().SHOW_POI_LABEL.get();
|
||||
return view.getSettings().SHOW_POI_LABEL.get() || isAlwaysVisible();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {
|
||||
if (!view.getSettings().SHOW_POI_LABEL.get()) {
|
||||
if (!isVisible()) {
|
||||
return;
|
||||
}
|
||||
TIntHashSet set = new TIntHashSet();
|
||||
|
|
|
@ -273,6 +273,12 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall
|
|||
layer.destroyLayer();
|
||||
}
|
||||
|
||||
public synchronized void removeAllLayers() {
|
||||
while(layers.size() > 0) {
|
||||
removeLayer(layers.get(0));
|
||||
}
|
||||
}
|
||||
|
||||
public List<OsmandMapLayer> getLayers() {
|
||||
return layers;
|
||||
}
|
||||
|
@ -356,7 +362,7 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall
|
|||
}
|
||||
|
||||
public float getSettingsZoomScale() {
|
||||
return settings.getSettingsZoomScale(getDensity());
|
||||
return getSettings().getSettingsZoomScale(getDensity());
|
||||
}
|
||||
|
||||
public float getZoomScale() {
|
||||
|
|
3822
OsmAnd/src/net/osmand/render/default.render_template.xml
Normal file
3822
OsmAnd/src/net/osmand/render/default.render_template.xml
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue