small bugfix
git-svn-id: https://osmand.googlecode.com/svn/trunk@62 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8
This commit is contained in:
parent
2060618cb8
commit
86395f8bc9
12 changed files with 77 additions and 70 deletions
|
@ -35,6 +35,9 @@ public class ToDoConstants {
|
||||||
// 9. Log to see when exception occured(android)
|
// 9. Log to see when exception occured(android)
|
||||||
// 10. Specify auto-rotating map (compass).
|
// 10. Specify auto-rotating map (compass).
|
||||||
// 11. Print out additional info speed, altitude, number of satellites
|
// 11. Print out additional info speed, altitude, number of satellites
|
||||||
|
// 12. Show point where are you going (the arrow not the point)
|
||||||
|
// 13. Save point as favourite
|
||||||
|
// 14. Show zoom level directly on map
|
||||||
// -------------------
|
// -------------------
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,8 +47,10 @@ public class ToDoConstants {
|
||||||
// 2. implement bundle downloading tiles ()
|
// 2. implement bundle downloading tiles ()
|
||||||
// 3. download tiles without using dir tiles
|
// 3. download tiles without using dir tiles
|
||||||
// 4. Config file log & see log from file
|
// 4. Config file log & see log from file
|
||||||
// 6. Predefine what should be extracted from osm (building, poi or roads)
|
// 6. Predefine before file loading what should be extracted from osm (building, poi or roads)
|
||||||
// 7. Fix TODO in files (accept amenity - way)
|
// 7. Fix TODO in files (accept amenity - way)
|
||||||
// 8. add progress for data generation process
|
// 9. Normalizing streets
|
||||||
|
// 10. Reinvent index mechanism (save in zip file with tile indexes, save city/town addresses separately, read partially !)
|
||||||
|
// 11. Street setName() change in city index!
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,18 +3,11 @@ package com.osmand.data;
|
||||||
import com.osmand.osm.Entity;
|
import com.osmand.osm.Entity;
|
||||||
|
|
||||||
public class Building extends MapObject<Entity> {
|
public class Building extends MapObject<Entity> {
|
||||||
|
|
||||||
private Entity e;
|
|
||||||
|
|
||||||
public Building(Entity e){
|
public Building(Entity e){
|
||||||
this.e = e;
|
super(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Building(){}
|
public Building(){}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Entity getEntity() {
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,12 +41,11 @@ public class City extends MapObject<Node> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Node el;
|
|
||||||
private CityType type = null;
|
private CityType type = null;
|
||||||
private Map<String, Street> streets = new TreeMap<String, Street>();
|
private Map<String, Street> streets = new TreeMap<String, Street>();
|
||||||
|
|
||||||
public City(Node el){
|
public City(Node el){
|
||||||
this.el = el;
|
super(el);
|
||||||
type = CityType.valueFromString(el.getTag(OSMTagKey.PLACE));
|
type = CityType.valueFromString(el.getTag(OSMTagKey.PLACE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,11 +86,6 @@ public class City extends MapObject<Node> {
|
||||||
return streets.values();
|
return streets.values();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Node getEntity() {
|
|
||||||
return el;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "City [" +type+"] " + getName();
|
return "City [" +type+"] " + getName();
|
||||||
|
|
|
@ -10,9 +10,22 @@ public abstract class MapObject<T extends Entity> implements Comparable<MapObjec
|
||||||
protected String name = null;
|
protected String name = null;
|
||||||
protected LatLon location = null;
|
protected LatLon location = null;
|
||||||
protected Long id = null;
|
protected Long id = null;
|
||||||
|
|
||||||
// could be null
|
// could be null
|
||||||
public abstract T getEntity();
|
protected T entity = null;
|
||||||
|
|
||||||
|
public MapObject(){}
|
||||||
|
|
||||||
|
public MapObject(T e){
|
||||||
|
entity = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getEntity(){
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEntity(T e){
|
||||||
|
entity = e;
|
||||||
|
}
|
||||||
|
|
||||||
public void setId(Long id) {
|
public void setId(Long id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
|
|
@ -10,15 +10,15 @@ import java.util.Map;
|
||||||
|
|
||||||
import com.osmand.Algoritms;
|
import com.osmand.Algoritms;
|
||||||
import com.osmand.data.City.CityType;
|
import com.osmand.data.City.CityType;
|
||||||
|
import com.osmand.osm.Entity;
|
||||||
import com.osmand.osm.LatLon;
|
import com.osmand.osm.LatLon;
|
||||||
import com.osmand.osm.MapUtils;
|
import com.osmand.osm.MapUtils;
|
||||||
import com.osmand.osm.Node;
|
import com.osmand.osm.Node;
|
||||||
import com.osmand.osm.io.OsmBaseStorage;
|
import com.osmand.osm.io.OsmBaseStorage;
|
||||||
|
|
||||||
public class Region {
|
public class Region extends MapObject<Entity> {
|
||||||
|
|
||||||
private DataTileManager<Amenity> amenities = new DataTileManager<Amenity>();
|
private DataTileManager<Amenity> amenities = new DataTileManager<Amenity>();
|
||||||
private String name;
|
|
||||||
private OsmBaseStorage storage;
|
private OsmBaseStorage storage;
|
||||||
|
|
||||||
private static class CityComparator implements Comparator<City>{
|
private static class CityComparator implements Comparator<City>{
|
||||||
|
@ -41,8 +41,6 @@ public class Region {
|
||||||
this.name = "Region";
|
this.name = "Region";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public OsmBaseStorage getStorage() {
|
public OsmBaseStorage getStorage() {
|
||||||
return storage;
|
return storage;
|
||||||
}
|
}
|
||||||
|
@ -52,14 +50,6 @@ public class Region {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getName(){
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection<City> getCitiesByType(CityType type){
|
public Collection<City> getCitiesByType(CityType type){
|
||||||
return cities.get(type);
|
return cities.get(type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ public class Street extends MapObject<Entity> {
|
||||||
|
|
||||||
private List<Building> buildings = new ArrayList<Building>();
|
private List<Building> buildings = new ArrayList<Building>();
|
||||||
private List<Node> wayNodes = new ArrayList<Node>();
|
private List<Node> wayNodes = new ArrayList<Node>();
|
||||||
private Node center = null;
|
|
||||||
|
|
||||||
public Street(String name){
|
public Street(String name){
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
@ -37,15 +36,15 @@ public class Street extends MapObject<Entity> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public LatLon getLocation(){
|
public LatLon getLocation(){
|
||||||
if(center == null){
|
if(entity == null){
|
||||||
calculateCenter();
|
calculateCenter();
|
||||||
}
|
}
|
||||||
return center == null ? null : center.getLatLon();
|
return entity == null ? null : entity.getLatLon();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void calculateCenter(){
|
protected void calculateCenter(){
|
||||||
if(wayNodes.size() == 1){
|
if(wayNodes.size() == 1){
|
||||||
center = wayNodes.get(0);
|
entity = wayNodes.get(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LatLon c = MapUtils.getWeightCenterForNodes(wayNodes);
|
LatLon c = MapUtils.getWeightCenterForNodes(wayNodes);
|
||||||
|
@ -54,7 +53,7 @@ public class Street extends MapObject<Entity> {
|
||||||
if (n != null) {
|
if (n != null) {
|
||||||
double nd = MapUtils.getDistance(n, c);
|
double nd = MapUtils.getDistance(n, c);
|
||||||
if (nd < dist) {
|
if (nd < dist) {
|
||||||
center = n;
|
entity = n;
|
||||||
dist = nd;
|
dist = nd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,9 +70,4 @@ public class Street extends MapObject<Entity> {
|
||||||
Collections.sort(buildings);
|
Collections.sort(buildings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Entity getEntity() {
|
|
||||||
return center;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -311,20 +311,24 @@ public class MapPanel extends JPanel implements IMapDownloaderCallback {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tileDownloaded(DownloadRequest request) {
|
public void tileDownloaded(DownloadRequest request) {
|
||||||
|
if(request == null){
|
||||||
|
prepareImage(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
int tileSize = getTileSize();
|
int tileSize = getTileSize();
|
||||||
double xTileLeft = getXTile() - getSize().width / (2d * tileSize);
|
double xTileLeft = getXTile() - getSize().width / (2d * tileSize);
|
||||||
double yTileUp = getYTile() - getSize().height / (2d * tileSize);
|
double yTileUp = getYTile() - getSize().height / (2d * tileSize);
|
||||||
int i = request.xTile - (int)xTileLeft;
|
int i = request.xTile - (int)xTileLeft;
|
||||||
int j = request.yTile - (int)yTileUp;
|
int j = request.yTile - (int)yTileUp;
|
||||||
if(request.zoom == this.zoom &&
|
if (request.zoom == this.zoom && (i >= 0 && i < images.length) && (j >= 0 && j < images[i].length)) {
|
||||||
(i >=0 && i<images.length) && (j>=0 && j< images[i].length)){
|
|
||||||
try {
|
try {
|
||||||
|
System.out.println();
|
||||||
images[i][j] = getImageFor(request.xTile, request.yTile, zoom, false);
|
images[i][j] = getImageFor(request.xTile, request.yTile, zoom, false);
|
||||||
repaint();
|
repaint();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("Eror reading png " + request.xTile +" " + request.yTile + " zoom : " + zoom, e);
|
log.error("Eror reading png " + request.xTile + " " + request.yTile + " zoom : " + zoom, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -260,9 +260,14 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
DefaultMutableTreeNode node;
|
DefaultMutableTreeNode node;
|
||||||
node = (DefaultMutableTreeNode)
|
node = (DefaultMutableTreeNode)
|
||||||
(e.getTreePath().getLastPathComponent());
|
(e.getTreePath().getLastPathComponent());
|
||||||
if(node instanceof DataExtractionTreeNode && ((DataExtractionTreeNode) node).getModelObject() instanceof Region){
|
if(node instanceof DataExtractionTreeNode){
|
||||||
Region r = (Region) ((DataExtractionTreeNode) node).getModelObject();
|
if(((DataExtractionTreeNode) node).getModelObject() instanceof Region){
|
||||||
r.setName(node.getUserObject().toString());
|
Region r = (Region) ((DataExtractionTreeNode) node).getModelObject();
|
||||||
|
r.setName(node.getUserObject().toString());
|
||||||
|
} else if(((DataExtractionTreeNode) node).getModelObject() instanceof MapObject<?>){
|
||||||
|
MapObject<?> r = (MapObject<?>) ((DataExtractionTreeNode) node).getModelObject();
|
||||||
|
r.setName(node.getUserObject().toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void treeNodesInserted(TreeModelEvent e) {
|
public void treeNodesInserted(TreeModelEvent e) {
|
||||||
|
@ -726,7 +731,7 @@ public class OsmExtractionUI implements IMapLocationListener {
|
||||||
Object node = tree.getLastSelectedPathComponent();
|
Object node = tree.getLastSelectedPathComponent();
|
||||||
if (node instanceof DataExtractionTreeNode) {
|
if (node instanceof DataExtractionTreeNode) {
|
||||||
DataExtractionTreeNode treeNode = (DataExtractionTreeNode) node;
|
DataExtractionTreeNode treeNode = (DataExtractionTreeNode) node;
|
||||||
if (treeNode.getModelObject() instanceof Region) {
|
if (treeNode.getModelObject() instanceof Region || treeNode.getModelObject() instanceof MapObject<?>) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<resources>
|
<resources>
|
||||||
<string name="show_poi_over_map_description">Show POI on map</string>
|
<string name="show_poi_over_map_description">Show POI on map</string>
|
||||||
<string name="show_poi_over_map">Show POI</string>
|
<string name="show_poi_over_map">Show POI</string>
|
||||||
<string name="map_tile_source_descr">Choose the source of tiles</string>
|
<string name="map_tile_source_descr">Choose the source of tiles:</string>
|
||||||
<string name="map_tile_source">Map tile source</string>
|
<string name="map_tile_source">Map tile source</string>
|
||||||
<string name="map_source">Map source</string>
|
<string name="map_source">Map source</string>
|
||||||
<string name="use_internet">Use internet</string>
|
<string name="use_internet">Use internet</string>
|
||||||
|
|
|
@ -207,7 +207,8 @@ public class ResourceManager {
|
||||||
try {
|
try {
|
||||||
OsmBaseStorage storage = new OsmBaseStorage();
|
OsmBaseStorage storage = new OsmBaseStorage();
|
||||||
stream = new FileInputStream(f);
|
stream = new FileInputStream(f);
|
||||||
stream = new BufferedInputStream(stream);
|
// stream = new BufferedInputStream(stream);
|
||||||
|
InputStream streamForProgress = stream;
|
||||||
if (zipped) {
|
if (zipped) {
|
||||||
if (stream.read() != 'B' || stream.read() != 'Z') {
|
if (stream.read() != 'B' || stream.read() != 'Z') {
|
||||||
log.error("Can't read poi file " + f.getAbsolutePath()
|
log.error("Can't read poi file " + f.getAbsolutePath()
|
||||||
|
@ -220,7 +221,7 @@ public class ResourceManager {
|
||||||
if(progress != null){
|
if(progress != null){
|
||||||
progress.startTask("Indexing poi " + f.getName(), stream.available());
|
progress.startTask("Indexing poi " + f.getName(), stream.available());
|
||||||
}
|
}
|
||||||
storage.parseOSM(stream, progress);
|
storage.parseOSM(stream, progress, streamForProgress);
|
||||||
for (Entity e : storage.getRegisteredEntities().values()) {
|
for (Entity e : storage.getRegisteredEntities().values()) {
|
||||||
if (e instanceof Node && Amenity.isAmenity((Node) e)) {
|
if (e instanceof Node && Amenity.isAmenity((Node) e)) {
|
||||||
poiIndex.registerObject(((Node)e).getLatitude(), ((Node)e).getLongitude(), new Amenity((Node) e));
|
poiIndex.registerObject(((Node)e).getLatitude(), ((Node)e).getLongitude(), new Amenity((Node) e));
|
||||||
|
|
|
@ -42,22 +42,22 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
useInternetToDownloadTiles.setChecked(OsmandSettings.isUsingInternetToDownloadTiles(this));
|
useInternetToDownloadTiles.setChecked(OsmandSettings.isUsingInternetToDownloadTiles(this));
|
||||||
showPoiOnMap.setChecked(OsmandSettings.isShowingPoiOverMap(this));
|
showPoiOnMap.setChecked(OsmandSettings.isShowingPoiOverMap(this));
|
||||||
|
|
||||||
List<TileSourceTemplate> list = TileSourceManager.getKnownSourceTemplates();
|
List<TileSourceTemplate> list = TileSourceManager.getKnownSourceTemplates();
|
||||||
String[] entries = new String[list.size()];
|
String[] entries = new String[list.size()];
|
||||||
for(int i=0; i<list.size(); i++){
|
for (int i = 0; i < list.size(); i++) {
|
||||||
entries[i] = list.get(i).getName();
|
entries[i] = list.get(i).getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
tileSourcePreference.setEntries(entries);
|
tileSourcePreference.setEntries(entries);
|
||||||
tileSourcePreference.setEntryValues(entries);
|
tileSourcePreference.setEntryValues(entries);
|
||||||
tileSourcePreference.setValue(OsmandSettings.getMapTileSourceName(this));
|
tileSourcePreference.setValue(OsmandSettings.getMapTileSourceName(this));
|
||||||
tileSourcePreference.setSummary(tileSourcePreference.getSummary() + "\t\t[" + OsmandSettings.getMapTileSourceName(this)+"]");
|
String mapName = " " +OsmandSettings.getMapTileSourceName(this);
|
||||||
|
tileSourcePreference.setSummary(tileSourcePreference.getSummary() + mapName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -73,6 +73,13 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference
|
||||||
} else if (preference == tileSourcePreference) {
|
} else if (preference == tileSourcePreference) {
|
||||||
edit.putString(OsmandSettings.MAP_TILE_SOURCES, (String) newValue);
|
edit.putString(OsmandSettings.MAP_TILE_SOURCES, (String) newValue);
|
||||||
edit.commit();
|
edit.commit();
|
||||||
|
String summary = tileSourcePreference.getSummary().toString();
|
||||||
|
if (summary.lastIndexOf(':') != -1) {
|
||||||
|
summary = summary.substring(0, summary.lastIndexOf(':') + 1);
|
||||||
|
}
|
||||||
|
summary += " " + OsmandSettings.getMapTileSourceName(this);
|
||||||
|
tileSourcePreference.setSummary(summary);
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ public class PointLocationLayer implements OsmandMapLayer {
|
||||||
private Paint area;
|
private Paint area;
|
||||||
|
|
||||||
protected Location lastKnownLocation = null;
|
protected Location lastKnownLocation = null;
|
||||||
|
protected final static int RADIUS = 7;
|
||||||
private OsmandMapTileView view;
|
private OsmandMapTileView view;
|
||||||
|
|
||||||
private void initUI() {
|
private void initUI() {
|
||||||
|
@ -52,9 +53,9 @@ public class PointLocationLayer implements OsmandMapLayer {
|
||||||
.getAccuracy(), view.getTileSize(), view.getWidth());
|
.getAccuracy(), view.getTileSize(), view.getWidth());
|
||||||
|
|
||||||
if (locationX >= 0 && locationY >= 0) {
|
if (locationX >= 0 && locationY >= 0) {
|
||||||
canvas.drawCircle(locationX, locationY, 4, location);
|
canvas.drawCircle(locationX, locationY, RADIUS, location);
|
||||||
}
|
}
|
||||||
if (radius > 4) {
|
if (radius > RADIUS) {
|
||||||
canvas.drawCircle(locationX, locationY, radius, area);
|
canvas.drawCircle(locationX, locationY, radius, area);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue