[jmapviewer] 12/14: Imported Upstream version 1.02+svn30322.really+dfsg1
David Paleino
dapal at debian.org
Tue Mar 18 18:01:13 UTC 2014
This is an automated email from the git hooks/post-receive script.
dapal pushed a commit to branch master
in repository jmapviewer.
commit 50af1241bf50fea293813b373984338630509526
Author: David Paleino <dapal at debian.org>
Date: Wed Mar 12 12:55:12 2014 +0100
Imported Upstream version 1.02+svn30322.really+dfsg1
---
.classpath | 6 +
.project | 17 ++
.settings/org.eclipse.core.resources.prefs | 3 +
.settings/org.eclipse.jdt.core.prefs | 280 ++++++++++++++++++
.settings/org.eclipse.jdt.ui.prefs | 8 +
Readme.txt | 23 +-
releases/1.0/JMapViewer-1.0-Source.zip | Bin 0 -> 99256 bytes
releases/1.0/JMapViewer-1.0.zip | Bin 0 -> 222809 bytes
releases/1.01/JMapViewer-1.01-Source.zip | Bin 0 -> 99402 bytes
releases/1.01/JMapViewer-1.01.zip | Bin 0 -> 222797 bytes
releases/1.02/JMapViewer-1.02-Source.zip | Bin 0 -> 99405 bytes
releases/1.02/JMapViewer-1.02.zip | Bin 0 -> 222769 bytes
.../gui/jmapviewer/AbstractLayer.java | 175 +++++------
.../gui/jmapviewer/AttributionSupport.java | 327 ++++++++++-----------
.../openstreetmap/gui/jmapviewer/Coordinate.java | 3 +-
.../gui/jmapviewer/DefaultMapController.java | 3 +-
src/org/openstreetmap/gui/jmapviewer/Demo.java | 6 +-
.../gui/jmapviewer/FeatureAdapter.java | 127 ++++----
.../gui/jmapviewer/JMapController.java | 3 +-
.../openstreetmap/gui/jmapviewer/JMapViewer.java | 71 +++--
.../gui/jmapviewer/JMapViewerTree.java | 1 +
.../gui/jmapviewer/JobDispatcher.java | 3 +-
src/org/openstreetmap/gui/jmapviewer/Layer.java | 1 +
.../openstreetmap/gui/jmapviewer/LayerGroup.java | 1 +
.../gui/jmapviewer/MapMarkerCircle.java | 3 +-
.../openstreetmap/gui/jmapviewer/MapMarkerDot.java | 3 +-
.../gui/jmapviewer/MapObjectImpl.java | 3 +-
.../gui/jmapviewer/MapPolygonImpl.java | 225 +++++++-------
.../gui/jmapviewer/MapRectangleImpl.java | 167 +++++------
.../gui/jmapviewer/MemoryTileCache.java | 3 +-
.../gui/jmapviewer/OsmFileCacheTileLoader.java | 18 +-
.../openstreetmap/gui/jmapviewer/OsmMercator.java | 27 +-
.../gui/jmapviewer/OsmTileLoader.java | 3 +-
src/org/openstreetmap/gui/jmapviewer/Style.java | 1 +
src/org/openstreetmap/gui/jmapviewer/Tile.java | 3 +-
.../gui/jmapviewer/TileController.java | 1 +
.../jmapviewer/checkBoxTree/CheckBoxNodeData.java | 1 +
.../checkBoxTree/CheckBoxNodeEditor.java | 1 +
.../jmapviewer/checkBoxTree/CheckBoxNodePanel.java | 1 +
.../checkBoxTree/CheckBoxNodeRenderer.java | 1 +
.../gui/jmapviewer/checkBoxTree/CheckBoxTree.java | 1 +
.../gui/jmapviewer/events/JMVCommandEvent.java | 97 +++---
.../gui/jmapviewer/interfaces/Attributed.java | 101 ++++---
.../jmapviewer/interfaces/CachedTileLoader.java | 2 +-
.../gui/jmapviewer/interfaces/ICoordinate.java | 1 +
.../interfaces/JMapViewerEventListener.java | 35 ++-
.../gui/jmapviewer/interfaces/MapMarker.java | 5 +-
.../gui/jmapviewer/interfaces/MapObject.java | 1 +
.../gui/jmapviewer/interfaces/MapPolygon.java | 76 ++---
.../gui/jmapviewer/interfaces/MapRectangle.java | 3 +-
.../gui/jmapviewer/interfaces/TileCache.java | 3 +-
.../jmapviewer/interfaces/TileClearController.java | 1 +
.../gui/jmapviewer/interfaces/TileJob.java | 3 +-
.../gui/jmapviewer/interfaces/TileLoader.java | 3 +-
.../jmapviewer/interfaces/TileLoaderListener.java | 3 +-
.../gui/jmapviewer/interfaces/TileSource.java | 53 +++-
.../tilesources/AbstractMapQuestTileSource.java | 1 +
.../tilesources/AbstractOsmTileSource.java | 1 +
.../tilesources/AbstractTMSTileSource.java | 215 ++++++++------
.../jmapviewer/tilesources/AbstractTileSource.java | 155 +++++-----
.../tilesources/BingAerialTileSource.java | 3 +-
.../tilesources/MapQuestOpenAerialTileSource.java | 1 +
.../tilesources/MapQuestOsmTileSource.java | 1 +
.../gui/jmapviewer/tilesources/OsmTileSource.java | 3 +-
.../jmapviewer/tilesources/ScanexTileSource.java | 83 ++++--
.../gui/jmapviewer/tilesources/TMSTileSource.java | 8 +-
.../tilesources/TemplatedTMSTileSource.java | 1 +
67 files changed, 1377 insertions(+), 1002 deletions(-)
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..d171cd4
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.project b/.project
new file mode 100644
index 0000000..b18095b
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>OSM</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..80b990a
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Wed Jul 16 10:49:16 CEST 2008
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3408a14
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,280 @@
+#Sun Jan 31 13:16:40 CET 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=16
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=false
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=false
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=100
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..d6d3a9b
--- /dev/null
+++ b/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,8 @@
+#Sun Jan 31 13:16:40 CET 2010
+eclipse.preferences.version=1
+formatter_profile=_JOSM
+formatter_settings_version=11
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
diff --git a/Readme.txt b/Readme.txt
index 8ce68aa..ef51e62 100644
--- a/Readme.txt
+++ b/Readme.txt
@@ -1,6 +1,23 @@
JMapViewer
-(c) 2008 Jan Peter Stotz and others
+(c) 2007, Tim Haussmann
+(c) 2008-2012, Jan Peter Stotz
+(c) 2009-2013, Dirk Stöcker
+(c) 2009, Stefan Zeller
+(c) 2009, Karl Guggisberg
+(c) 2009, Dave Hansen
+(c) 2010-2011, Ian Dees
+(c) 2010-2011, Michael Vigovsky
+(c) 2011-2013, Paul Hartmann
+(c) 2011-2014, Gleb Smirnoff
+(c) 2011-2014, Vincent Privat
+(c) 2011, Jason Huntley
+(c) 2012, Simon Legner
+(c) 2012, Teemu Koskinen
+(c) 2012, Jiri Klement
+(c) 2013, Matt Hoover
+(c) 2013, Alexei Kasatkin
+(c) 2013, Galo Higueras
This work bases partly on the JOSM plugin "Slippy Map Chooser" by Tim Haussmann
@@ -22,5 +39,5 @@ Therefore any application using JMapViewer requires a working Internet connectio
3. How do I use JMapViewer in my application?
You can just create an instance of the class org.openstreetmap.gui.jmapviewer.JMapViewer
-using the default constructor and add it to your panel/frame/windows.
-For more details please see the Demo class in the same package.
\ No newline at end of file
+using the default constructor and add it to your panel/frame/windows.
+For more details please see the Demo class in the same package.
diff --git a/releases/1.0/JMapViewer-1.0-Source.zip b/releases/1.0/JMapViewer-1.0-Source.zip
new file mode 100644
index 0000000..eed7909
Binary files /dev/null and b/releases/1.0/JMapViewer-1.0-Source.zip differ
diff --git a/releases/1.0/JMapViewer-1.0.zip b/releases/1.0/JMapViewer-1.0.zip
new file mode 100644
index 0000000..f0b0ba9
Binary files /dev/null and b/releases/1.0/JMapViewer-1.0.zip differ
diff --git a/releases/1.01/JMapViewer-1.01-Source.zip b/releases/1.01/JMapViewer-1.01-Source.zip
new file mode 100644
index 0000000..e67f77b
Binary files /dev/null and b/releases/1.01/JMapViewer-1.01-Source.zip differ
diff --git a/releases/1.01/JMapViewer-1.01.zip b/releases/1.01/JMapViewer-1.01.zip
new file mode 100644
index 0000000..99a89d8
Binary files /dev/null and b/releases/1.01/JMapViewer-1.01.zip differ
diff --git a/releases/1.02/JMapViewer-1.02-Source.zip b/releases/1.02/JMapViewer-1.02-Source.zip
new file mode 100644
index 0000000..241110f
Binary files /dev/null and b/releases/1.02/JMapViewer-1.02-Source.zip differ
diff --git a/releases/1.02/JMapViewer-1.02.zip b/releases/1.02/JMapViewer-1.02.zip
new file mode 100644
index 0000000..6536932
Binary files /dev/null and b/releases/1.02/JMapViewer-1.02.zip differ
diff --git a/src/org/openstreetmap/gui/jmapviewer/AbstractLayer.java b/src/org/openstreetmap/gui/jmapviewer/AbstractLayer.java
index 49b41ff..1691032 100644
--- a/src/org/openstreetmap/gui/jmapviewer/AbstractLayer.java
+++ b/src/org/openstreetmap/gui/jmapviewer/AbstractLayer.java
@@ -1,87 +1,88 @@
-package org.openstreetmap.gui.jmapviewer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class AbstractLayer {
- private LayerGroup parent;
- private String name;
- private String description;
- private Style style;
- private Boolean visible;
- private Boolean visibleTexts=true;
-
- public AbstractLayer(String name){
- this(name, (String)null);
- }
- public AbstractLayer(String name, String description){
- this(name, description, MapMarkerCircle.getDefaultStyle());
- }
- public AbstractLayer(String name, Style style){
- this(name, null, style);
- }
- public AbstractLayer(String name, String description, Style style){
- this(null, name, description, style);
- }
- public AbstractLayer(LayerGroup parent, String name){
- this(parent, name, MapMarkerCircle.getDefaultStyle());
- }
- public AbstractLayer(LayerGroup parent, String name, Style style){
- this(parent, name, null, style);
- }
- public AbstractLayer(LayerGroup parent, String name, String description, Style style){
- setParent(parent);
- setName(name);
- setDescription(description);
- setStyle(style);
- setVisible(true);
-
- if(parent!=null) parent.add(this);
- }
- public LayerGroup getParent() {
- return parent;
- }
- public void setParent(LayerGroup parent) {
- this.parent = parent;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getDescription() {
- return description;
- }
- public void setDescription(String description) {
- this.description = description;
- }
- public Style getStyle() {
- return style;
- }
- public void setStyle(Style style) {
- this.style = style;
- }
- public Boolean isVisible() {
- return visible;
- }
- public void setVisible(Boolean visible) {
- this.visible = visible;
- }
- public static <E> List<E> add(List<E> list, E element) {
- if(element!=null){
- if(list==null) list = new ArrayList<E>();
- if(!list.contains(element)) list.add(element);
- }
- return list;
- }
- public Boolean isVisibleTexts() {
- return visibleTexts;
- }
- public void setVisibleTexts(Boolean visibleTexts) {
- this.visibleTexts = visibleTexts;
- }
- public String toString(){
- return name;
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AbstractLayer {
+ private LayerGroup parent;
+ private String name;
+ private String description;
+ private Style style;
+ private Boolean visible;
+ private Boolean visibleTexts=true;
+
+ public AbstractLayer(String name){
+ this(name, (String)null);
+ }
+ public AbstractLayer(String name, String description){
+ this(name, description, MapMarkerCircle.getDefaultStyle());
+ }
+ public AbstractLayer(String name, Style style){
+ this(name, null, style);
+ }
+ public AbstractLayer(String name, String description, Style style){
+ this(null, name, description, style);
+ }
+ public AbstractLayer(LayerGroup parent, String name){
+ this(parent, name, MapMarkerCircle.getDefaultStyle());
+ }
+ public AbstractLayer(LayerGroup parent, String name, Style style){
+ this(parent, name, null, style);
+ }
+ public AbstractLayer(LayerGroup parent, String name, String description, Style style){
+ setParent(parent);
+ setName(name);
+ setDescription(description);
+ setStyle(style);
+ setVisible(true);
+
+ if(parent!=null) parent.add(this);
+ }
+ public LayerGroup getParent() {
+ return parent;
+ }
+ public void setParent(LayerGroup parent) {
+ this.parent = parent;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public Style getStyle() {
+ return style;
+ }
+ public void setStyle(Style style) {
+ this.style = style;
+ }
+ public Boolean isVisible() {
+ return visible;
+ }
+ public void setVisible(Boolean visible) {
+ this.visible = visible;
+ }
+ public static <E> List<E> add(List<E> list, E element) {
+ if(element!=null){
+ if(list==null) list = new ArrayList<E>();
+ if(!list.contains(element)) list.add(element);
+ }
+ return list;
+ }
+ public Boolean isVisibleTexts() {
+ return visibleTexts;
+ }
+ public void setVisibleTexts(Boolean visibleTexts) {
+ this.visibleTexts = visibleTexts;
+ }
+ public String toString(){
+ return name;
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java b/src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java
index 62d01e7..261632e 100644
--- a/src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java
+++ b/src/org/openstreetmap/gui/jmapviewer/AttributionSupport.java
@@ -1,164 +1,163 @@
-package org.openstreetmap.gui.jmapviewer;
-
-//License: GPL.
-
-import static org.openstreetmap.gui.jmapviewer.FeatureAdapter.tr;
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.font.TextAttribute;
-import java.awt.geom.Rectangle2D;
-import java.awt.image.ImageObserver;
-import java.util.HashMap;
-
-import org.openstreetmap.gui.jmapviewer.interfaces.Attributed;
-
-public class AttributionSupport {
-
- private Attributed source;
-
- private Image attrImage;
- private String attrTermsText;
- private String attrTermsUrl;
- public static final Font ATTR_FONT = new Font("Arial", Font.PLAIN, 10);
- public static final Font ATTR_LINK_FONT;
-
- protected Rectangle attrTextBounds = null;
- protected Rectangle attrToUBounds = null;
- protected Rectangle attrImageBounds = null;
-
- static {
- HashMap<TextAttribute, Integer> aUnderline = new HashMap<TextAttribute, Integer>();
- aUnderline.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
- ATTR_LINK_FONT = ATTR_FONT.deriveFont(aUnderline);
- }
-
- public void initialize(Attributed source) {
- this.source = source;
- boolean requireAttr = source.requiresAttribution();
- if (requireAttr) {
- attrImage = source.getAttributionImage();
- attrTermsText = source.getTermsOfUseText();
- attrTermsUrl = source.getTermsOfUseURL();
- if (attrTermsUrl != null && attrTermsText == null) {
- attrTermsText = tr("Background Terms of Use");
- }
- } else {
- attrImage = null;
- attrTermsUrl = null;
- }
- }
-
- public void paintAttribution(Graphics g, int width, int height, Coordinate topLeft, Coordinate bottomRight, int zoom, ImageObserver observer) {
- if (source == null || !source.requiresAttribution()) {
- attrToUBounds = null;
- attrImageBounds = null;
- attrTextBounds = null;
- return;
- }
-
- // Draw attribution
- Font font = g.getFont();
- g.setFont(ATTR_LINK_FONT);
-
- // Draw terms of use text
- int termsTextHeight = 0;
- int termsTextY = height;
-
- if (attrTermsText != null) {
- Rectangle2D termsStringBounds = g.getFontMetrics().getStringBounds(attrTermsText, g);
- int textRealHeight = (int) termsStringBounds.getHeight();
- termsTextHeight = textRealHeight - 5;
- int termsTextWidth = (int) termsStringBounds.getWidth();
- termsTextY = height - termsTextHeight;
- int x = 2;
- int y = height - termsTextHeight;
- attrToUBounds = new Rectangle(x, y-termsTextHeight, termsTextWidth, textRealHeight);
- g.setColor(Color.black);
- g.drawString(attrTermsText, x + 1, y + 1);
- g.setColor(Color.white);
- g.drawString(attrTermsText, x, y);
- } else {
- attrToUBounds = null;
- }
-
- // Draw attribution logo
- if (attrImage != null) {
- int x = 2;
- int imgWidth = attrImage.getWidth(observer);
- int imgHeight = attrImage.getHeight(observer);
- int y = termsTextY - imgHeight - termsTextHeight - 5;
- attrImageBounds = new Rectangle(x, y, imgWidth, imgHeight);
- g.drawImage(attrImage, x, y, null);
- } else {
- attrImageBounds = null;
- }
-
- g.setFont(ATTR_FONT);
- String attributionText = source.getAttributionText(zoom, topLeft, bottomRight);
- if (attributionText != null) {
- Rectangle2D stringBounds = g.getFontMetrics().getStringBounds(attributionText, g);
- int textHeight = (int) stringBounds.getHeight() - 5;
- int x = width - (int) stringBounds.getWidth();
- int y = height - textHeight;
- g.setColor(Color.black);
- g.drawString(attributionText, x + 1, y + 1);
- g.setColor(Color.white);
- g.drawString(attributionText, x, y);
- attrTextBounds = new Rectangle(x, y-textHeight, (int) stringBounds.getWidth(), (int) stringBounds.getHeight());
- } else {
- attrTextBounds = null;
- }
-
- g.setFont(font);
- }
-
- public boolean handleAttributionCursor(Point p) {
- if (attrTextBounds != null && attrTextBounds.contains(p)) {
- return true;
- } else if (attrImageBounds != null && attrImageBounds.contains(p)) {
- return true;
- } else if (attrToUBounds != null && attrToUBounds.contains(p)) {
- return true;
- }
- return false;
- }
-
- public boolean handleAttribution(Point p, boolean click) {
- if (source == null || !source.requiresAttribution())
- return false;
-
- if (attrTextBounds != null && attrTextBounds.contains(p)) {
- String attributionURL = source.getAttributionLinkURL();
- if (attributionURL != null) {
- if (click) {
- FeatureAdapter.openLink(attributionURL);
- }
- return true;
- }
- } else if (attrImageBounds != null && attrImageBounds.contains(p)) {
- String attributionImageURL = source.getAttributionImageURL();
- if (attributionImageURL != null) {
- if (click) {
- FeatureAdapter.openLink(source.getAttributionImageURL());
- }
- return true;
- }
- } else if (attrToUBounds != null && attrToUBounds.contains(p)) {
- String termsOfUseURL = source.getTermsOfUseURL();
- if (termsOfUseURL != null) {
- if (click) {
- FeatureAdapter.openLink(termsOfUseURL);
- }
- return true;
- }
- }
- return false;
- }
-
-}
-
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer;
+
+import static org.openstreetmap.gui.jmapviewer.FeatureAdapter.tr;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.font.TextAttribute;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.ImageObserver;
+import java.util.HashMap;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.Attributed;
+
+public class AttributionSupport {
+
+ private Attributed source;
+
+ private Image attrImage;
+ private String attrTermsText;
+ private String attrTermsUrl;
+ public static final Font ATTR_FONT = new Font("Arial", Font.PLAIN, 10);
+ public static final Font ATTR_LINK_FONT;
+
+ protected Rectangle attrTextBounds = null;
+ protected Rectangle attrToUBounds = null;
+ protected Rectangle attrImageBounds = null;
+
+ static {
+ HashMap<TextAttribute, Integer> aUnderline = new HashMap<TextAttribute, Integer>();
+ aUnderline.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
+ ATTR_LINK_FONT = ATTR_FONT.deriveFont(aUnderline);
+ }
+
+ public void initialize(Attributed source) {
+ this.source = source;
+ boolean requireAttr = source.requiresAttribution();
+ if (requireAttr) {
+ attrImage = source.getAttributionImage();
+ attrTermsText = source.getTermsOfUseText();
+ attrTermsUrl = source.getTermsOfUseURL();
+ if (attrTermsUrl != null && attrTermsText == null) {
+ attrTermsText = tr("Background Terms of Use");
+ }
+ } else {
+ attrImage = null;
+ attrTermsUrl = null;
+ }
+ }
+
+ public void paintAttribution(Graphics g, int width, int height, Coordinate topLeft, Coordinate bottomRight, int zoom, ImageObserver observer) {
+ if (source == null || !source.requiresAttribution()) {
+ attrToUBounds = null;
+ attrImageBounds = null;
+ attrTextBounds = null;
+ return;
+ }
+
+ // Draw attribution
+ Font font = g.getFont();
+ g.setFont(ATTR_LINK_FONT);
+
+ // Draw terms of use text
+ int termsTextHeight = 0;
+ int termsTextY = height;
+
+ if (attrTermsText != null) {
+ Rectangle2D termsStringBounds = g.getFontMetrics().getStringBounds(attrTermsText, g);
+ int textRealHeight = (int) termsStringBounds.getHeight();
+ termsTextHeight = textRealHeight - 5;
+ int termsTextWidth = (int) termsStringBounds.getWidth();
+ termsTextY = height - termsTextHeight;
+ int x = 2;
+ int y = height - termsTextHeight;
+ attrToUBounds = new Rectangle(x, y-termsTextHeight, termsTextWidth, textRealHeight);
+ g.setColor(Color.black);
+ g.drawString(attrTermsText, x + 1, y + 1);
+ g.setColor(Color.white);
+ g.drawString(attrTermsText, x, y);
+ } else {
+ attrToUBounds = null;
+ }
+
+ // Draw attribution logo
+ if (attrImage != null) {
+ int x = 2;
+ int imgWidth = attrImage.getWidth(observer);
+ int imgHeight = attrImage.getHeight(observer);
+ int y = termsTextY - imgHeight - termsTextHeight - 5;
+ attrImageBounds = new Rectangle(x, y, imgWidth, imgHeight);
+ g.drawImage(attrImage, x, y, null);
+ } else {
+ attrImageBounds = null;
+ }
+
+ g.setFont(ATTR_FONT);
+ String attributionText = source.getAttributionText(zoom, topLeft, bottomRight);
+ if (attributionText != null) {
+ Rectangle2D stringBounds = g.getFontMetrics().getStringBounds(attributionText, g);
+ int textHeight = (int) stringBounds.getHeight() - 5;
+ int x = width - (int) stringBounds.getWidth();
+ int y = height - textHeight;
+ g.setColor(Color.black);
+ g.drawString(attributionText, x + 1, y + 1);
+ g.setColor(Color.white);
+ g.drawString(attributionText, x, y);
+ attrTextBounds = new Rectangle(x, y-textHeight, (int) stringBounds.getWidth(), (int) stringBounds.getHeight());
+ } else {
+ attrTextBounds = null;
+ }
+
+ g.setFont(font);
+ }
+
+ public boolean handleAttributionCursor(Point p) {
+ if (attrTextBounds != null && attrTextBounds.contains(p)) {
+ return true;
+ } else if (attrImageBounds != null && attrImageBounds.contains(p)) {
+ return true;
+ } else if (attrToUBounds != null && attrToUBounds.contains(p)) {
+ return true;
+ }
+ return false;
+ }
+
+ public boolean handleAttribution(Point p, boolean click) {
+ if (source == null || !source.requiresAttribution())
+ return false;
+
+ if (attrTextBounds != null && attrTextBounds.contains(p)) {
+ String attributionURL = source.getAttributionLinkURL();
+ if (attributionURL != null) {
+ if (click) {
+ FeatureAdapter.openLink(attributionURL);
+ }
+ return true;
+ }
+ } else if (attrImageBounds != null && attrImageBounds.contains(p)) {
+ String attributionImageURL = source.getAttributionImageURL();
+ if (attributionImageURL != null) {
+ if (click) {
+ FeatureAdapter.openLink(source.getAttributionImageURL());
+ }
+ return true;
+ }
+ } else if (attrToUBounds != null && attrToUBounds.contains(p)) {
+ String termsOfUseURL = source.getTermsOfUseURL();
+ if (termsOfUseURL != null) {
+ if (click) {
+ FeatureAdapter.openLink(termsOfUseURL);
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
+
diff --git a/src/org/openstreetmap/gui/jmapviewer/Coordinate.java b/src/org/openstreetmap/gui/jmapviewer/Coordinate.java
index f98338b..d3803ce 100644
--- a/src/org/openstreetmap/gui/jmapviewer/Coordinate.java
+++ b/src/org/openstreetmap/gui/jmapviewer/Coordinate.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2009 by Stefan Zeller
-
import java.awt.geom.Point2D;
import java.io.IOException;
import java.io.ObjectInputStream;
diff --git a/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java b/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
index 81b2e11..a37929b 100644
--- a/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
+++ b/src/org/openstreetmap/gui/jmapviewer/DefaultMapController.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
diff --git a/src/org/openstreetmap/gui/jmapviewer/Demo.java b/src/org/openstreetmap/gui/jmapviewer/Demo.java
index 68c466b..b8ff7bb 100644
--- a/src/org/openstreetmap/gui/jmapviewer/Demo.java
+++ b/src/org/openstreetmap/gui/jmapviewer/Demo.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Point;
@@ -31,7 +30,6 @@ import org.openstreetmap.gui.jmapviewer.tilesources.MapQuestOsmTileSource;
import org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource;
/**
- *
* Demonstrates the usage of {@link JMapViewer}
*
* @author Jan Peter Stotz
@@ -206,7 +204,7 @@ public class Demo extends JFrame implements JMapViewerEventListener {
Layer wales = treeMap.addLayer("UK");
map().addMapRectangle(new MapRectangleImpl(wales, "Wales", c(53.35,-4.57), c(51.64,-2.63)));
- // map.setDisplayPositionByLatLon(49.807, 8.6, 11);
+ // map.setDisplayPosition(new Coordinate(49.807, 8.6), 11);
// map.setTileGridVisible(true);
map().addMouseListener(new MouseAdapter() {
diff --git a/src/org/openstreetmap/gui/jmapviewer/FeatureAdapter.java b/src/org/openstreetmap/gui/jmapviewer/FeatureAdapter.java
index 83e6d37..b1e3fb4 100644
--- a/src/org/openstreetmap/gui/jmapviewer/FeatureAdapter.java
+++ b/src/org/openstreetmap/gui/jmapviewer/FeatureAdapter.java
@@ -1,64 +1,63 @@
-package org.openstreetmap.gui.jmapviewer;
-
-//License: GPL.
-
-import java.awt.Desktop;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.text.MessageFormat;
-
-public class FeatureAdapter {
-
- public static interface BrowserAdapter {
- void openLink(String url);
- }
-
- public static interface TranslationAdapter {
- String tr(String text, Object... objects);
- // TODO: more i18n functions
- }
-
- private static BrowserAdapter browserAdapter = new DefaultBrowserAdapter();
- private static TranslationAdapter translationAdapter = new DefaultTranslationAdapter();
-
- public static void registerBrowserAdapter(BrowserAdapter browserAdapter) {
- FeatureAdapter.browserAdapter = browserAdapter;
- }
-
- public static void registerTranslationAdapter(TranslationAdapter translationAdapter) {
- FeatureAdapter.translationAdapter = translationAdapter;
- }
-
- public static void openLink(String url) {
- browserAdapter.openLink(url);
- }
-
- public static String tr(String text, Object... objects) {
- return translationAdapter.tr(text, objects);
- }
-
- public static class DefaultBrowserAdapter implements BrowserAdapter {
- @Override
- public void openLink(String url) {
- if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
- try {
- Desktop.getDesktop().browse(new URI(url));
- } catch (IOException e) {
- e.printStackTrace();
- } catch (URISyntaxException e) {
- e.printStackTrace();
- }
- } else {
- System.err.println(tr("Opening link not supported on current platform (''{0}'')", url));
- }
- }
- }
-
- public static class DefaultTranslationAdapter implements TranslationAdapter {
- @Override
- public String tr(String text, Object... objects) {
- return MessageFormat.format(text, objects);
- }
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer;
+
+import java.awt.Desktop;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.text.MessageFormat;
+
+public class FeatureAdapter {
+
+ public static interface BrowserAdapter {
+ void openLink(String url);
+ }
+
+ public static interface TranslationAdapter {
+ String tr(String text, Object... objects);
+ // TODO: more i18n functions
+ }
+
+ private static BrowserAdapter browserAdapter = new DefaultBrowserAdapter();
+ private static TranslationAdapter translationAdapter = new DefaultTranslationAdapter();
+
+ public static void registerBrowserAdapter(BrowserAdapter browserAdapter) {
+ FeatureAdapter.browserAdapter = browserAdapter;
+ }
+
+ public static void registerTranslationAdapter(TranslationAdapter translationAdapter) {
+ FeatureAdapter.translationAdapter = translationAdapter;
+ }
+
+ public static void openLink(String url) {
+ browserAdapter.openLink(url);
+ }
+
+ public static String tr(String text, Object... objects) {
+ return translationAdapter.tr(text, objects);
+ }
+
+ public static class DefaultBrowserAdapter implements BrowserAdapter {
+ @Override
+ public void openLink(String url) {
+ if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
+ try {
+ Desktop.getDesktop().browse(new URI(url));
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ }
+ } else {
+ System.err.println(tr("Opening link not supported on current platform (''{0}'')", url));
+ }
+ }
+ }
+
+ public static class DefaultTranslationAdapter implements TranslationAdapter {
+ @Override
+ public String tr(String text, Object... objects) {
+ return MessageFormat.format(text, objects);
+ }
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/JMapController.java b/src/org/openstreetmap/gui/jmapviewer/JMapController.java
index 63307f1..8de5300 100644
--- a/src/org/openstreetmap/gui/jmapviewer/JMapController.java
+++ b/src/org/openstreetmap/gui/jmapviewer/JMapController.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelListener;
diff --git a/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java b/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
index dcce880..368a90f 100644
--- a/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
+++ b/src/org/openstreetmap/gui/jmapviewer/JMapViewer.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
@@ -35,7 +34,6 @@ import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
import org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource;
/**
- *
* Provides a simple panel that displays pre-rendered map tiles loaded from the
* OpenStreetMap project.
*
@@ -88,7 +86,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
}
protected ZOOM_BUTTON_STYLE zoomButtonStyle;
- private TileSource tileSource;
+ protected TileSource tileSource;
protected AttributionSupport attribution = new AttributionSupport();
@@ -120,7 +118,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
initializeZoomSlider();
setMinimumSize(new Dimension(tileSource.getTileSize(), tileSource.getTileSize()));
setPreferredSize(new Dimension(400, 400));
- setDisplayPositionByLatLon(50, 9, 3);
+ setDisplayPosition(new Coordinate(50, 9), 3);
//setToolTipText("");
}
@@ -184,15 +182,13 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
* Changes the map pane so that it is centered on the specified coordinate
* at the given zoom level.
*
- * @param lat
- * latitude of the specified coordinate
- * @param lon
- * longitude of the specified coordinate
+ * @param to
+ * specified coordinate
* @param zoom
- * {@link #MIN_ZOOM} <= zoom level <= {@link #MAX_ZOOM}
+ * {@link #MIN_ZOOM} <= zoom level <= {@link #MAX_ZOOM}
*/
- public void setDisplayPositionByLatLon(double lat, double lon, int zoom) {
- setDisplayPositionByLatLon(new Point(getWidth() / 2, getHeight() / 2), lat, lon, zoom);
+ public void setDisplayPosition(Coordinate to, int zoom) {
+ setDisplayPosition(new Point(getWidth() / 2, getHeight() / 2), to, zoom);
}
/**
@@ -203,17 +199,15 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
* @param mapPoint
* point on the map denoted in pixels where the coordinate should
* be set
- * @param lat
- * latitude of the specified coordinate
- * @param lon
- * longitude of the specified coordinate
+ * @param to
+ * specified coordinate
* @param zoom
- * {@link #MIN_ZOOM} <= zoom level <=
+ * {@link #MIN_ZOOM} <= zoom level <=
* {@link TileSource#getMaxZoom()}
*/
- public void setDisplayPositionByLatLon(Point mapPoint, double lat, double lon, int zoom) {
- int x = OsmMercator.LonToX(lon, zoom);
- int y = OsmMercator.LatToY(lat, zoom);
+ public void setDisplayPosition(Point mapPoint, Coordinate to, int zoom) {
+ int x = tileSource.LonToX(to.getLon(), zoom);
+ int y = tileSource.LatToY(to.getLat(), zoom);
setDisplayPosition(mapPoint, x, y, zoom);
}
@@ -270,8 +264,8 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
if (markers) {
for (MapMarker marker : mapMarkerList) {
if(marker.isVisible()){
- int x = OsmMercator.LonToX(marker.getLon(), mapZoomMax);
- int y = OsmMercator.LatToY(marker.getLat(), mapZoomMax);
+ int x = tileSource.LonToX(marker.getLon(), mapZoomMax);
+ int y = tileSource.LatToY(marker.getLat(), mapZoomMax);
x_max = Math.max(x_max, x);
y_max = Math.max(y_max, y);
x_min = Math.min(x_min, x);
@@ -283,10 +277,10 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
if (rectangles) {
for (MapRectangle rectangle : mapRectangleList) {
if(rectangle.isVisible()){
- x_max = Math.max(x_max, OsmMercator.LonToX(rectangle.getBottomRight().getLon(), mapZoomMax));
- y_max = Math.max(y_max, OsmMercator.LatToY(rectangle.getTopLeft().getLat(), mapZoomMax));
- x_min = Math.min(x_min, OsmMercator.LonToX(rectangle.getTopLeft().getLon(), mapZoomMax));
- y_min = Math.min(y_min, OsmMercator.LatToY(rectangle.getBottomRight().getLat(), mapZoomMax));
+ x_max = Math.max(x_max, tileSource.LonToX(rectangle.getBottomRight().getLon(), mapZoomMax));
+ y_max = Math.max(y_max, tileSource.LatToY(rectangle.getTopLeft().getLat(), mapZoomMax));
+ x_min = Math.min(x_min, tileSource.LonToX(rectangle.getTopLeft().getLon(), mapZoomMax));
+ y_min = Math.min(y_min, tileSource.LatToY(rectangle.getBottomRight().getLat(), mapZoomMax));
}
}
}
@@ -295,8 +289,8 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
for (MapPolygon polygon : mapPolygonList) {
if(polygon.isVisible()){
for (ICoordinate c : polygon.getPoints()) {
- int x = OsmMercator.LonToX(c.getLon(), mapZoomMax);
- int y = OsmMercator.LatToY(c.getLat(), mapZoomMax);
+ int x = tileSource.LonToX(c.getLon(), mapZoomMax);
+ int y = tileSource.LatToY(c.getLat(), mapZoomMax);
x_max = Math.max(x_max, x);
y_max = Math.max(y_max, y);
x_min = Math.min(x_min, x);
@@ -370,8 +364,8 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
* @return latitude / longitude
*/
public Coordinate getPosition() {
- double lon = OsmMercator.XToLon(center.x, zoom);
- double lat = OsmMercator.YToLat(center.y, zoom);
+ double lon = tileSource.XToLon(center.x, zoom);
+ double lat = tileSource.YToLat(center.y, zoom);
return new Coordinate(lat, lon);
}
@@ -399,8 +393,8 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
public Coordinate getPosition(int mapPointX, int mapPointY) {
int x = center.x + mapPointX - getWidth() / 2;
int y = center.y + mapPointY - getHeight() / 2;
- double lon = OsmMercator.XToLon(x, zoom);
- double lat = OsmMercator.YToLat(y, zoom);
+ double lon = tileSource.XToLon(x, zoom);
+ double lat = tileSource.YToLat(y, zoom);
return new Coordinate(lat, lon);
}
@@ -414,8 +408,8 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
* and checkOutside set to <code>true</code>
*/
public Point getMapPosition(double lat, double lon, boolean checkOutside) {
- int x = OsmMercator.LonToX(lon, zoom);
- int y = OsmMercator.LatToY(lat, zoom);
+ int x = tileSource.LonToX(lon, zoom);
+ int y = tileSource.LatToY(lat, zoom);
x -= center.x - getWidth() / 2;
y -= center.y - getHeight() / 2;
if (checkOutside) {
@@ -434,7 +428,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
* @return Integer the radius in pixels
*/
public Integer getLatOffset(double lat, double offset, boolean checkOutside) {
- int y = OsmMercator.LatToY(lat+offset, zoom);
+ int y = tileSource.LatToY(lat+offset, zoom);
y -= center.y - getHeight() / 2;
if (checkOutside) {
if (y < 0 || y > getHeight())
@@ -512,7 +506,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
Coordinate originCoord=getPosition(origin);
Coordinate centerCoord=getPosition(center);
- double mDistance=OsmMercator.getDistance(originCoord.getLat(), originCoord.getLon(),
+ double mDistance = tileSource.getDistance(originCoord.getLat(), originCoord.getLon(),
centerCoord.getLat(), centerCoord.getLon());
return mDistance/pDistance;
@@ -819,7 +813,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
Coordinate zoomPos = getPosition(mapPoint);
tileController.cancelOutstandingJobs(); // Clearing outstanding load
// requests
- setDisplayPositionByLatLon(mapPoint, zoomPos.getLat(), zoomPos.getLon(), zoom);
+ setDisplayPosition(mapPoint, zoomPos, zoom);
this.fireJMVEvent(new JMVCommandEvent(COMMAND.ZOOM, this));
}
@@ -961,6 +955,7 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
throw new RuntimeException("Maximum zoom level too high");
if (tileSource.getMinZoom() < MIN_ZOOM)
throw new RuntimeException("Minumim zoom level too low");
+ Coordinate position = getPosition();
this.tileSource = tileSource;
tileController.setTileSource(tileSource);
zoomSlider.setMinimum(tileSource.getMinZoom());
@@ -969,8 +964,8 @@ public class JMapViewer extends JPanel implements TileLoaderListener {
if (zoom > tileSource.getMaxZoom()) {
setZoom(tileSource.getMaxZoom());
}
-
attribution.initialize(tileSource);
+ setDisplayPosition(position, zoom);
repaint();
}
diff --git a/src/org/openstreetmap/gui/jmapviewer/JMapViewerTree.java b/src/org/openstreetmap/gui/jmapviewer/JMapViewerTree.java
index 38eeb57..472a620 100644
--- a/src/org/openstreetmap/gui/jmapviewer/JMapViewerTree.java
+++ b/src/org/openstreetmap/gui/jmapviewer/JMapViewerTree.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
import java.awt.BorderLayout;
diff --git a/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java b/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java
index 9639c37..1cc4754 100644
--- a/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java
+++ b/src/org/openstreetmap/gui/jmapviewer/JobDispatcher.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;
diff --git a/src/org/openstreetmap/gui/jmapviewer/Layer.java b/src/org/openstreetmap/gui/jmapviewer/Layer.java
index 18aff1f..5d73c39 100644
--- a/src/org/openstreetmap/gui/jmapviewer/Layer.java
+++ b/src/org/openstreetmap/gui/jmapviewer/Layer.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
import java.util.List;
diff --git a/src/org/openstreetmap/gui/jmapviewer/LayerGroup.java b/src/org/openstreetmap/gui/jmapviewer/LayerGroup.java
index 04cffb3..a27a348 100644
--- a/src/org/openstreetmap/gui/jmapviewer/LayerGroup.java
+++ b/src/org/openstreetmap/gui/jmapviewer/LayerGroup.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
import java.util.List;
diff --git a/src/org/openstreetmap/gui/jmapviewer/MapMarkerCircle.java b/src/org/openstreetmap/gui/jmapviewer/MapMarkerCircle.java
index d7a2472..fb2276b 100644
--- a/src/org/openstreetmap/gui/jmapviewer/MapMarkerCircle.java
+++ b/src/org/openstreetmap/gui/jmapviewer/MapMarkerCircle.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
diff --git a/src/org/openstreetmap/gui/jmapviewer/MapMarkerDot.java b/src/org/openstreetmap/gui/jmapviewer/MapMarkerDot.java
index 4b55e4f..b54e79a 100644
--- a/src/org/openstreetmap/gui/jmapviewer/MapMarkerDot.java
+++ b/src/org/openstreetmap/gui/jmapviewer/MapMarkerDot.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.awt.Color;
import org.openstreetmap.gui.jmapviewer.interfaces.MapMarker;
diff --git a/src/org/openstreetmap/gui/jmapviewer/MapObjectImpl.java b/src/org/openstreetmap/gui/jmapviewer/MapObjectImpl.java
index 69b8b01..2e9cd90 100644
--- a/src/org/openstreetmap/gui/jmapviewer/MapObjectImpl.java
+++ b/src/org/openstreetmap/gui/jmapviewer/MapObjectImpl.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
import java.awt.Color;
@@ -98,7 +99,7 @@ public abstract class MapObjectImpl {
public void paintText(Graphics g, Point position) {
if(name!=null && g!=null && position!=null){
if(getFont()==null){
- Font f = getDefaultFont(); // g.getFont();
+ Font f = getDefaultFont();
setFont(new Font(f.getName(), Font.BOLD, f.getSize()));
}
g.setColor(Color.DARK_GRAY);
diff --git a/src/org/openstreetmap/gui/jmapviewer/MapPolygonImpl.java b/src/org/openstreetmap/gui/jmapviewer/MapPolygonImpl.java
index 4ea4515..daf201b 100644
--- a/src/org/openstreetmap/gui/jmapviewer/MapPolygonImpl.java
+++ b/src/org/openstreetmap/gui/jmapviewer/MapPolygonImpl.java
@@ -1,120 +1,105 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.gui.jmapviewer;
-
-import java.awt.AlphaComposite;
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Composite;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Polygon;
-import java.awt.Rectangle;
-import java.awt.Stroke;
-import java.util.Arrays;
-import java.util.List;
-
-import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
-import org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon;
-
-/**
- * @author Vincent
- *
- */
-public class MapPolygonImpl extends MapObjectImpl implements MapPolygon {
-
- private List<? extends ICoordinate> points;
-
- public MapPolygonImpl(ICoordinate ... points) {
- this(null, null, points);
- }
- public MapPolygonImpl(List<? extends ICoordinate> points) {
- this(null, null, points);
- }
- public MapPolygonImpl(String name, List<? extends ICoordinate> points) {
- this(null, name, points);
- }
- public MapPolygonImpl(String name, ICoordinate ... points) {
- this(null, name, points);
- }
- public MapPolygonImpl(Layer layer, List<? extends ICoordinate> points) {
- this(layer, null, points);
- }
- public MapPolygonImpl(Layer layer, String name, List<? extends ICoordinate> points) {
- this(layer, name, points, getDefaultStyle());
- }
- public MapPolygonImpl(Layer layer, String name, ICoordinate ... points) {
- this(layer, name, Arrays.asList(points), getDefaultStyle());
- }
- public MapPolygonImpl(Layer layer, String name, List<? extends ICoordinate> points, Style style) {
- super(layer, name, style);
- this.points = points;
- }
-
- /* (non-Javadoc)
- * @see org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon#getPoints()
- */
- @Override
- public List<? extends ICoordinate> getPoints() {
- return this.points;
- }
-
- /* (non-Javadoc)
- * @see org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon#paint(java.awt.Graphics, java.util.List)
- */
- @Override
- public void paint(Graphics g, List<Point> points) {
- Polygon polygon = new Polygon();
- for (Point p : points) {
- polygon.addPoint(p.x, p.y);
- }
- paint(g, polygon);
- }
-
- /* (non-Javadoc)
- * @see org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon#paint(java.awt.Graphics, java.awt.Polygon)
- */
- @Override
- public void paint(Graphics g, Polygon polygon) {
- // Prepare graphics
- Color oldColor = g.getColor();
- g.setColor(getColor());
-
- Stroke oldStroke = null;
- if (g instanceof Graphics2D) {
- Graphics2D g2 = (Graphics2D) g;
- oldStroke = g2.getStroke();
- g2.setStroke(getStroke());
- }
- // Draw
- g.drawPolygon(polygon);
- if (g instanceof Graphics2D && getBackColor()!=null) {
- Graphics2D g2 = (Graphics2D) g;
- Composite oldComposite = g2.getComposite();
- g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
- g2.setPaint(getBackColor());
- g2.fillPolygon(polygon);
- g2.setComposite(oldComposite);
- }
- // Restore graphics
- g.setColor(oldColor);
- if (g instanceof Graphics2D) {
- ((Graphics2D) g).setStroke(oldStroke);
- }
- Rectangle rec = polygon.getBounds();
- Point corner = rec.getLocation();
- Point p= new Point(corner.x+(rec.width/2), corner.y+(rec.height/2));
- if(getLayer()==null||getLayer().isVisibleTexts()) paintText(g, p);
- }
-
- public static Style getDefaultStyle(){
- return new Style(Color.BLUE, new Color(100,100,100,50), new BasicStroke(2), getDefaultFont());
- }
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- return "MapPolygon [points=" + points + "]";
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer;
+
+import java.awt.AlphaComposite;
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Composite;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Polygon;
+import java.awt.Rectangle;
+import java.awt.Stroke;
+import java.util.Arrays;
+import java.util.List;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
+import org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon;
+
+public class MapPolygonImpl extends MapObjectImpl implements MapPolygon {
+
+ private List<? extends ICoordinate> points;
+
+ public MapPolygonImpl(ICoordinate ... points) {
+ this(null, null, points);
+ }
+ public MapPolygonImpl(List<? extends ICoordinate> points) {
+ this(null, null, points);
+ }
+ public MapPolygonImpl(String name, List<? extends ICoordinate> points) {
+ this(null, name, points);
+ }
+ public MapPolygonImpl(String name, ICoordinate ... points) {
+ this(null, name, points);
+ }
+ public MapPolygonImpl(Layer layer, List<? extends ICoordinate> points) {
+ this(layer, null, points);
+ }
+ public MapPolygonImpl(Layer layer, String name, List<? extends ICoordinate> points) {
+ this(layer, name, points, getDefaultStyle());
+ }
+ public MapPolygonImpl(Layer layer, String name, ICoordinate ... points) {
+ this(layer, name, Arrays.asList(points), getDefaultStyle());
+ }
+ public MapPolygonImpl(Layer layer, String name, List<? extends ICoordinate> points, Style style) {
+ super(layer, name, style);
+ this.points = points;
+ }
+
+ @Override
+ public List<? extends ICoordinate> getPoints() {
+ return this.points;
+ }
+
+ @Override
+ public void paint(Graphics g, List<Point> points) {
+ Polygon polygon = new Polygon();
+ for (Point p : points) {
+ polygon.addPoint(p.x, p.y);
+ }
+ paint(g, polygon);
+ }
+
+ @Override
+ public void paint(Graphics g, Polygon polygon) {
+ // Prepare graphics
+ Color oldColor = g.getColor();
+ g.setColor(getColor());
+
+ Stroke oldStroke = null;
+ if (g instanceof Graphics2D) {
+ Graphics2D g2 = (Graphics2D) g;
+ oldStroke = g2.getStroke();
+ g2.setStroke(getStroke());
+ }
+ // Draw
+ g.drawPolygon(polygon);
+ if (g instanceof Graphics2D && getBackColor()!=null) {
+ Graphics2D g2 = (Graphics2D) g;
+ Composite oldComposite = g2.getComposite();
+ g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
+ g2.setPaint(getBackColor());
+ g2.fillPolygon(polygon);
+ g2.setComposite(oldComposite);
+ }
+ // Restore graphics
+ g.setColor(oldColor);
+ if (g instanceof Graphics2D) {
+ ((Graphics2D) g).setStroke(oldStroke);
+ }
+ Rectangle rec = polygon.getBounds();
+ Point corner = rec.getLocation();
+ Point p= new Point(corner.x+(rec.width/2), corner.y+(rec.height/2));
+ if(getLayer()==null||getLayer().isVisibleTexts()) paintText(g, p);
+ }
+
+ public static Style getDefaultStyle(){
+ return new Style(Color.BLUE, new Color(100,100,100,50), new BasicStroke(2), getDefaultFont());
+ }
+
+ @Override
+ public String toString() {
+ return "MapPolygon [points=" + points + "]";
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java b/src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java
index 08bc7d3..51c8b33 100644
--- a/src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java
+++ b/src/org/openstreetmap/gui/jmapviewer/MapRectangleImpl.java
@@ -1,89 +1,78 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.gui.jmapviewer;
-
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Stroke;
-
-import org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle;
-
-/**
- * @author Vincent
- *
- */
-public class MapRectangleImpl extends MapObjectImpl implements MapRectangle {
-
- private Coordinate topLeft;
- private Coordinate bottomRight;
-
- public MapRectangleImpl(Coordinate topLeft, Coordinate bottomRight) {
- this(null, null, topLeft, bottomRight);
- }
- public MapRectangleImpl(String name, Coordinate topLeft, Coordinate bottomRight) {
- this(null, name, topLeft, bottomRight);
- }
- public MapRectangleImpl(Layer layer, Coordinate topLeft, Coordinate bottomRight) {
- this(layer, null, topLeft, bottomRight);
- }
- public MapRectangleImpl(Layer layer, String name, Coordinate topLeft, Coordinate bottomRight) {
- this(layer, name, topLeft, bottomRight, getDefaultStyle());
- }
- public MapRectangleImpl(Layer layer, String name, Coordinate topLeft, Coordinate bottomRight, Style style) {
- super(layer, name, style);
- this.topLeft = topLeft;
- this.bottomRight = bottomRight;
- }
-
- /* (non-Javadoc)
- * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#getTopLeft()
- */
- @Override
- public Coordinate getTopLeft() {
- return topLeft;
- }
-
- /* (non-Javadoc)
- * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#getBottomRight()
- */
- @Override
- public Coordinate getBottomRight() {
- return bottomRight;
- }
-
- /* (non-Javadoc)
- * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#paint(java.awt.Graphics, java.awt.Point, java.awt.Point)
- */
- @Override
- public void paint(Graphics g, Point topLeft, Point bottomRight) {
- // Prepare graphics
- Color oldColor = g.getColor();
- g.setColor(getColor());
- Stroke oldStroke = null;
- if (g instanceof Graphics2D) {
- Graphics2D g2 = (Graphics2D) g;
- oldStroke = g2.getStroke();
- g2.setStroke(getStroke());
- }
- // Draw
- g.drawRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
- // Restore graphics
- g.setColor(oldColor);
- if (g instanceof Graphics2D) {
- ((Graphics2D) g).setStroke(oldStroke);
- }
- int width=bottomRight.x-topLeft.x;
- int height=bottomRight.y-topLeft.y;
- Point p= new Point(topLeft.x+(width/2), topLeft.y+(height/2));
- if(getLayer()==null||getLayer().isVisibleTexts()) paintText(g, p);
- }
- public static Style getDefaultStyle(){
- return new Style(Color.BLUE, null, new BasicStroke(2), getDefaultFont());
- }
- @Override
- public String toString() {
- return "MapRectangle from " + getTopLeft() + " to " + getBottomRight();
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Stroke;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle;
+
+public class MapRectangleImpl extends MapObjectImpl implements MapRectangle {
+
+ private Coordinate topLeft;
+ private Coordinate bottomRight;
+
+ public MapRectangleImpl(Coordinate topLeft, Coordinate bottomRight) {
+ this(null, null, topLeft, bottomRight);
+ }
+ public MapRectangleImpl(String name, Coordinate topLeft, Coordinate bottomRight) {
+ this(null, name, topLeft, bottomRight);
+ }
+ public MapRectangleImpl(Layer layer, Coordinate topLeft, Coordinate bottomRight) {
+ this(layer, null, topLeft, bottomRight);
+ }
+ public MapRectangleImpl(Layer layer, String name, Coordinate topLeft, Coordinate bottomRight) {
+ this(layer, name, topLeft, bottomRight, getDefaultStyle());
+ }
+ public MapRectangleImpl(Layer layer, String name, Coordinate topLeft, Coordinate bottomRight, Style style) {
+ super(layer, name, style);
+ this.topLeft = topLeft;
+ this.bottomRight = bottomRight;
+ }
+
+ @Override
+ public Coordinate getTopLeft() {
+ return topLeft;
+ }
+
+ @Override
+ public Coordinate getBottomRight() {
+ return bottomRight;
+ }
+
+ @Override
+ public void paint(Graphics g, Point topLeft, Point bottomRight) {
+ // Prepare graphics
+ Color oldColor = g.getColor();
+ g.setColor(getColor());
+ Stroke oldStroke = null;
+ if (g instanceof Graphics2D) {
+ Graphics2D g2 = (Graphics2D) g;
+ oldStroke = g2.getStroke();
+ g2.setStroke(getStroke());
+ }
+ // Draw
+ g.drawRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
+ // Restore graphics
+ g.setColor(oldColor);
+ if (g instanceof Graphics2D) {
+ ((Graphics2D) g).setStroke(oldStroke);
+ }
+ int width=bottomRight.x-topLeft.x;
+ int height=bottomRight.y-topLeft.y;
+ Point p= new Point(topLeft.x+(width/2), topLeft.y+(height/2));
+ if(getLayer()==null||getLayer().isVisibleTexts()) paintText(g, p);
+ }
+
+ public static Style getDefaultStyle(){
+ return new Style(Color.BLUE, null, new BasicStroke(2), getDefaultFont());
+ }
+
+ @Override
+ public String toString() {
+ return "MapRectangle from " + getTopLeft() + " to " + getBottomRight();
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java b/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java
index f1d4dd1..4fb527a 100644
--- a/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java
+++ b/src/org/openstreetmap/gui/jmapviewer/MemoryTileCache.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
diff --git a/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java b/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java
index 7cc6dab..f82a874 100644
--- a/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java
+++ b/src/org/openstreetmap/gui/jmapviewer/OsmFileCacheTileLoader.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -277,10 +276,13 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
tileFile = getTagsFile();
} else {
fin = new FileInputStream(tileFile);
- if (fin.available() == 0)
- throw new IOException("File empty");
- tile.loadImage(fin);
- fin.close();
+ try {
+ if (fin.available() == 0)
+ throw new IOException("File empty");
+ tile.loadImage(fin);
+ } finally {
+ fin.close();
+ }
}
fileAge = tileFile.lastModified();
@@ -337,8 +339,8 @@ public class OsmFileCacheTileLoader extends OsmTileLoader implements CachedTileL
* Note: This does only work with servers providing the
* <code>LastModified</code> header:
* <ul>
- * <li>{@link tilesources.OsmTileSource.CycleMap} - supported</li>
- * <li>{@link tilesources.OsmTileSource.Mapnik} - not supported</li>
+ * <li>{@link org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource.CycleMap} - supported</li>
+ * <li>{@link org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource.Mapnik} - not supported</li>
* </ul>
*
* @param fileAge time of the
diff --git a/src/org/openstreetmap/gui/jmapviewer/OsmMercator.java b/src/org/openstreetmap/gui/jmapviewer/OsmMercator.java
index 8bc92a1..903ee25 100644
--- a/src/org/openstreetmap/gui/jmapviewer/OsmMercator.java
+++ b/src/org/openstreetmap/gui/jmapviewer/OsmMercator.java
@@ -1,21 +1,16 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-// License: GPL. Copyright 2007 by Tim Haussmann
-
/**
- * This class implements the Mercator Projection as it is used by Openstreetmap
+ * This class implements the Mercator Projection as it is used by OpenStreetMap
* (and google). It provides methods to translate coordinates from 'map space'
* into latitude and longitude (on the WGS84 ellipsoid) and vice versa. Map
* space is measured in pixels. The origin of the map space is the top left
- * corner. The map space origin (0,0) has latitude ~85 and longitude -180
- *
- * @author Tim Haussmann
- *
+ * corner. The map space origin (0,0) has latitude ~85 and longitude -180.
*/
-
public class OsmMercator {
- private static int TILE_SIZE = 256;
+ public static int TILE_SIZE = 256;
public static final double MAX_LAT = 85.05112877980659;
public static final double MIN_LAT = -85.05112877980659;
private static double EARTH_RADIUS = 6378137; // equatorial earth radius for EPSG:3857 (Mercator)
@@ -105,11 +100,10 @@ public class OsmMercator {
* @return [0..2^Zoomlevel*TILE_SIZE[
* @author Jan Peter Stotz
*/
- public static int LonToX(double aLongitude, int aZoomlevel) {
+ public static double LonToX(double aLongitude, int aZoomlevel) {
int mp = getMaxPixels(aZoomlevel);
- int x = (int) ((mp * (aLongitude + 180l)) / 360l);
- x = Math.min(x, mp - 1);
- return x;
+ double x = (mp * (aLongitude + 180l)) / 360l;
+ return Math.min(x, mp - 1);
}
/**
@@ -130,7 +124,7 @@ public class OsmMercator {
* @return [0..2^Zoomlevel*TILE_SIZE[
* @author Jan Peter Stotz
*/
- public static int LatToY(double aLat, int aZoomlevel) {
+ public static double LatToY(double aLat, int aZoomlevel) {
if (aLat < MIN_LAT)
aLat = MIN_LAT;
else if (aLat > MAX_LAT)
@@ -138,9 +132,8 @@ public class OsmMercator {
double sinLat = Math.sin(Math.toRadians(aLat));
double log = Math.log((1.0 + sinLat) / (1.0 - sinLat));
int mp = getMaxPixels(aZoomlevel);
- int y = (int) (mp * (0.5 - (log / (4.0 * Math.PI))));
- y = Math.min(y, mp - 1);
- return y;
+ double y = mp * (0.5 - (log / (4.0 * Math.PI)));
+ return Math.min(y, mp - 1);
}
/**
diff --git a/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java b/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java
index 8f34039..b84f83e 100644
--- a/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java
+++ b/src/org/openstreetmap/gui/jmapviewer/OsmTileLoader.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
diff --git a/src/org/openstreetmap/gui/jmapviewer/Style.java b/src/org/openstreetmap/gui/jmapviewer/Style.java
index b7e3e8f..44bad2b 100644
--- a/src/org/openstreetmap/gui/jmapviewer/Style.java
+++ b/src/org/openstreetmap/gui/jmapviewer/Style.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
import java.awt.AlphaComposite;
diff --git a/src/org/openstreetmap/gui/jmapviewer/Tile.java b/src/org/openstreetmap/gui/jmapviewer/Tile.java
index 7a6086e..99b04d7 100644
--- a/src/org/openstreetmap/gui/jmapviewer/Tile.java
+++ b/src/org/openstreetmap/gui/jmapviewer/Tile.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
diff --git a/src/org/openstreetmap/gui/jmapviewer/TileController.java b/src/org/openstreetmap/gui/jmapviewer/TileController.java
index 9cc82f7..e16255a 100644
--- a/src/org/openstreetmap/gui/jmapviewer/TileController.java
+++ b/src/org/openstreetmap/gui/jmapviewer/TileController.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer;
import org.openstreetmap.gui.jmapviewer.JobDispatcher.JobThread;
diff --git a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeData.java b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeData.java
index 152a15a..32acde0 100644
--- a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeData.java
+++ b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeData.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.checkBoxTree;
import org.openstreetmap.gui.jmapviewer.AbstractLayer;
diff --git a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeEditor.java b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeEditor.java
index b55a15e..e7e4e7b 100644
--- a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeEditor.java
+++ b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeEditor.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.checkBoxTree;
import java.awt.Component;
diff --git a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodePanel.java b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodePanel.java
index e8985dc..4fa42a7 100644
--- a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodePanel.java
+++ b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodePanel.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.checkBoxTree;
import java.awt.BorderLayout;
diff --git a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeRenderer.java b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeRenderer.java
index a85cb0e..29739c1 100644
--- a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeRenderer.java
+++ b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxNodeRenderer.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.checkBoxTree;
import java.awt.Color;
diff --git a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxTree.java b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxTree.java
index dcd0a7b..5167860 100644
--- a/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxTree.java
+++ b/src/org/openstreetmap/gui/jmapviewer/checkBoxTree/CheckBoxTree.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.checkBoxTree;
import java.awt.BorderLayout;
diff --git a/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java b/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java
index 74f9954..a3c2c47 100644
--- a/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java
+++ b/src/org/openstreetmap/gui/jmapviewer/events/JMVCommandEvent.java
@@ -1,49 +1,48 @@
-package org.openstreetmap.gui.jmapviewer.events;
-
-//License: GPL.
-
-import java.util.EventObject;
-
-/**
- * Used for passing events between UI components and other
- * objects that register as a JMapViewerEventListener
- *
- * @author Jason Huntley
- *
- */
-public class JMVCommandEvent extends EventObject {
- public static enum COMMAND {
- MOVE,
- ZOOM
- }
-
- private COMMAND command;
- /**
- *
- */
- private static final long serialVersionUID = 8701544867914969620L;
-
- public JMVCommandEvent(COMMAND cmd, Object source) {
- super(source);
-
- setCommand(cmd);
- }
-
- public JMVCommandEvent(Object source) {
- super(source);
- }
-
- /**
- * @return the command
- */
- public COMMAND getCommand() {
- return command;
- }
-
- /**
- * @param command the command to set
- */
- public void setCommand(COMMAND command) {
- this.command = command;
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.events;
+
+import java.util.EventObject;
+
+/**
+ * Used for passing events between UI components and other
+ * objects that register as a JMapViewerEventListener
+ *
+ * @author Jason Huntley
+ *
+ */
+public class JMVCommandEvent extends EventObject {
+ public static enum COMMAND {
+ MOVE,
+ ZOOM
+ }
+
+ private COMMAND command;
+ /**
+ *
+ */
+ private static final long serialVersionUID = 8701544867914969620L;
+
+ public JMVCommandEvent(COMMAND cmd, Object source) {
+ super(source);
+
+ setCommand(cmd);
+ }
+
+ public JMVCommandEvent(Object source) {
+ super(source);
+ }
+
+ /**
+ * @return the command
+ */
+ public COMMAND getCommand() {
+ return command;
+ }
+
+ /**
+ * @param command the command to set
+ */
+ public void setCommand(COMMAND command) {
+ this.command = command;
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/Attributed.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/Attributed.java
index 81a8ca0..862ec81 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/Attributed.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/Attributed.java
@@ -1,51 +1,50 @@
-package org.openstreetmap.gui.jmapviewer.interfaces;
-
-import java.awt.Image;
-
-import org.openstreetmap.gui.jmapviewer.Coordinate;
-
-//License: GPL.
-
-public interface Attributed {
- /**
- * @return True if the tile source requires attribution in text or image form.
- */
- boolean requiresAttribution();
-
- /**
- * @param zoom The optional zoom level for the view.
- * @param botRight The bottom right of the bounding box for attribution.
- * @param topLeft The top left of the bounding box for attribution.
- * @return Attribution text for the image source.
- */
- String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight);
-
- /**
- * @return The URL to open when the user clicks the attribution text.
- */
- String getAttributionLinkURL();
-
- /**
- * @return The URL for the attribution image. Null if no image should be displayed.
- */
- Image getAttributionImage();
-
- /**
- * @return The URL to open when the user clicks the attribution image.
- * When return value is null, the image is still displayed (provided getAttributionImage()
- * returns a value other than null), but the image does not link to a website.
- */
- String getAttributionImageURL();
-
- /**
- * @return The attribution "Terms of Use" text.
- * In case it returns null, but getTermsOfUseURL() is not null, a default
- * terms of use text is used.
- */
- String getTermsOfUseText();
-
- /**
- * @return The URL to open when the user clicks the attribution "Terms of Use" text.
- */
- String getTermsOfUseURL();
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.interfaces;
+
+import java.awt.Image;
+
+import org.openstreetmap.gui.jmapviewer.Coordinate;
+
+public interface Attributed {
+ /**
+ * @return True if the tile source requires attribution in text or image form.
+ */
+ boolean requiresAttribution();
+
+ /**
+ * @param zoom The optional zoom level for the view.
+ * @param botRight The bottom right of the bounding box for attribution.
+ * @param topLeft The top left of the bounding box for attribution.
+ * @return Attribution text for the image source.
+ */
+ String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight);
+
+ /**
+ * @return The URL to open when the user clicks the attribution text.
+ */
+ String getAttributionLinkURL();
+
+ /**
+ * @return The URL for the attribution image. Null if no image should be displayed.
+ */
+ Image getAttributionImage();
+
+ /**
+ * @return The URL to open when the user clicks the attribution image.
+ * When return value is null, the image is still displayed (provided getAttributionImage()
+ * returns a value other than null), but the image does not link to a website.
+ */
+ String getAttributionImageURL();
+
+ /**
+ * @return The attribution "Terms of Use" text.
+ * In case it returns null, but getTermsOfUseURL() is not null, a default
+ * terms of use text is used.
+ */
+ String getTermsOfUseText();
+
+ /**
+ * @return The URL to open when the user clicks the attribution "Terms of Use" text.
+ */
+ String getTermsOfUseURL();
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/CachedTileLoader.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/CachedTileLoader.java
index 1a40956..94c152f 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/CachedTileLoader.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/CachedTileLoader.java
@@ -1,4 +1,4 @@
-// License: GPL
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
/**
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/ICoordinate.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/ICoordinate.java
index c34e00f..1b14153 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/ICoordinate.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/ICoordinate.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
public interface ICoordinate {
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/JMapViewerEventListener.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/JMapViewerEventListener.java
index b56032e..e0914ad 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/JMapViewerEventListener.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/JMapViewerEventListener.java
@@ -1,18 +1,17 @@
-package org.openstreetmap.gui.jmapviewer.interfaces;
-
-//License: GPL.
-
-import java.util.EventListener;
-
-import org.openstreetmap.gui.jmapviewer.events.JMVCommandEvent;
-
-/**
- * Must be implemented for processing commands while user
- * interacts with map viewer.
- *
- * @author Jason Huntley
- *
- */
-public interface JMapViewerEventListener extends EventListener {
- public void processCommand(JMVCommandEvent command);
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.interfaces;
+
+import java.util.EventListener;
+
+import org.openstreetmap.gui.jmapviewer.events.JMVCommandEvent;
+
+/**
+ * Must be implemented for processing commands while user
+ * interacts with map viewer.
+ *
+ * @author Jason Huntley
+ *
+ */
+public interface JMapViewerEventListener extends EventListener {
+ public void processCommand(JMVCommandEvent command);
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapMarker.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapMarker.java
index 2c1dc34..29ae5c2 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapMarker.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapMarker.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import java.awt.Graphics;
import java.awt.Point;
@@ -17,7 +16,7 @@ import org.openstreetmap.gui.jmapviewer.JMapViewer;
*/
public interface MapMarker extends MapObject, ICoordinate{
- public static enum STYLE {FIXED, VARIABLE};
+ public static enum STYLE {FIXED, VARIABLE}
/**
* @return Latitude and Longitude of the map marker position
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapObject.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapObject.java
index 9c0f7fe..71ca133 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapObject.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapObject.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
import java.awt.Color;
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapPolygon.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapPolygon.java
index aa054de..8db97da 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapPolygon.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapPolygon.java
@@ -1,38 +1,38 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.gui.jmapviewer.interfaces;
-
-import java.awt.Graphics;
-import java.awt.Point;
-import java.awt.Polygon;
-import java.util.List;
-
-/**
- * Interface to be implemented by polygons that can be displayed on the map.
- *
- * @author Vincent
- */
-public interface MapPolygon extends MapObject{
-
- /**
- * @return Latitude/Longitude of each point of polygon
- */
- public List<? extends ICoordinate> getPoints();
-
- /**
- * Paints the map rectangle on the map. The <code>points</code>
- * are specifying the coordinates within <code>g</code>
- *
- * @param g
- * @param points
- */
- public void paint(Graphics g, List<Point> points);
-
- /**
- * Paints the map rectangle on the map. The <code>polygon</code>
- * is specifying the coordinates within <code>g</code>
- *
- * @param g
- * @param polygon
- */
- public void paint(Graphics g, Polygon polygon);
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.interfaces;
+
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Polygon;
+import java.util.List;
+
+/**
+ * Interface to be implemented by polygons that can be displayed on the map.
+ *
+ * @author Vincent
+ */
+public interface MapPolygon extends MapObject{
+
+ /**
+ * @return Latitude/Longitude of each point of polygon
+ */
+ public List<? extends ICoordinate> getPoints();
+
+ /**
+ * Paints the map rectangle on the map. The <code>points</code>
+ * are specifying the coordinates within <code>g</code>
+ *
+ * @param g
+ * @param points
+ */
+ public void paint(Graphics g, List<Point> points);
+
+ /**
+ * Paints the map rectangle on the map. The <code>polygon</code>
+ * is specifying the coordinates within <code>g</code>
+ *
+ * @param g
+ * @param polygon
+ */
+ public void paint(Graphics g, Polygon polygon);
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapRectangle.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapRectangle.java
index 8e0b942..f76197b 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/MapRectangle.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/MapRectangle.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
-//License: GPL. Copyright 2009 by Stefan Zeller
-
import java.awt.Graphics;
import java.awt.Point;
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileCache.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileCache.java
index 69b16e4..0082987 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileCache.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileCache.java
@@ -1,10 +1,9 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
import org.openstreetmap.gui.jmapviewer.JMapViewer;
import org.openstreetmap.gui.jmapviewer.Tile;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
/**
* Implement this interface for creating your custom tile cache for
* {@link JMapViewer}.
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileClearController.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileClearController.java
index 3ae88c4..603d354 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileClearController.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileClearController.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
import java.io.File;
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileJob.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileJob.java
index b82bdc7..45fdc54 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileJob.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileJob.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
-//License: GPL. Copyright 2012 by Dirk Stöcker
-
import org.openstreetmap.gui.jmapviewer.Tile;
/**
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java
index 38d26c1..c07619a 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoader.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
import org.openstreetmap.gui.jmapviewer.Tile;
/**
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java
index cf01494..075ac9f 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileLoaderListener.java
@@ -1,9 +1,8 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
import org.openstreetmap.gui.jmapviewer.Tile;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
public interface TileLoaderListener {
/**
diff --git a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileSource.java b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileSource.java
index 83de8a9..74a0284 100644
--- a/src/org/openstreetmap/gui/jmapviewer/interfaces/TileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/interfaces/TileSource.java
@@ -1,11 +1,10 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.interfaces;
import java.io.IOException;
import org.openstreetmap.gui.jmapviewer.JMapViewer;
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
/**
*
* @author Jan Peter Stotz
@@ -94,11 +93,57 @@ public interface TileSource extends Attributed {
*/
int getTileSize();
- double latToTileY(double lat, int zoom);
+ /**
+ * Gets the distance using Spherical law of cosines.
+ * @return the distance, m.
+ */
+ double getDistance(double la1, double lo1, double la2, double lo2);
+
+ /**
+ * Transform longitude to pixelspace.
+ * @return [0..2^Zoomlevel*TILE_SIZE[
+ */
+ int LonToX(double aLongitude, int aZoomlevel);
+
+ /**
+ * Transforms latitude to pixelspace.
+ * @return [0..2^Zoomlevel*TILE_SIZE[
+ */
+ int LatToY(double aLat, int aZoomlevel);
+
+ /**
+ * Transforms pixel coordinate X to longitude
+ * @return ]-180..180[
+ */
+ double XToLon(int aX, int aZoomlevel);
+
+ /**
+ * Transforms pixel coordinate Y to latitude.
+ * @return [MIN_LAT..MAX_LAT]
+ */
+ double YToLat(int aY, int aZoomlevel);
+ /**
+ * Transforms longitude to X tile coordinate.
+ * @return [0..2^Zoomlevel[
+ */
double lonToTileX(double lon, int zoom);
- double tileYToLat(int y, int zoom);
+ /**
+ * Transforms latitude to Y tile coordinate.
+ * @return [0..2^Zoomlevel[
+ */
+ double latToTileY(double lat, int zoom);
+ /**
+ * Transforms tile X coordinate to longitude.
+ * @return ]-180..180[
+ */
double tileXToLon(int x, int zoom);
+
+ /**
+ * Transforms tile Y coordinate to latitude.
+ * @return [MIN_LAT..MAX_LAT]
+ */
+ double tileYToLat(int y, int zoom);
}
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractMapQuestTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractMapQuestTileSource.java
index 6004d48..4dbee39 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractMapQuestTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractMapQuestTileSource.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.tilesources;
import java.awt.Image;
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractOsmTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractOsmTileSource.java
index 2dac34c..518c400 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractOsmTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractOsmTileSource.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.tilesources;
import java.awt.Image;
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTMSTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTMSTileSource.java
index ad091b0..37b3c4a 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTMSTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTMSTileSource.java
@@ -1,97 +1,118 @@
-package org.openstreetmap.gui.jmapviewer.tilesources;
-
-//License: GPL.
-
-import java.awt.Image;
-import java.io.IOException;
-
-import javax.swing.ImageIcon;
-
-import org.openstreetmap.gui.jmapviewer.Coordinate;
-import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
-
-public abstract class AbstractTMSTileSource extends AbstractTileSource {
-
- protected String name;
- protected String baseUrl;
-
- public AbstractTMSTileSource(String name, String base_url) {
- this.name = name;
- this.baseUrl = base_url;
- if(baseUrl.endsWith("/")) {
- baseUrl = baseUrl.substring(0,baseUrl.length()-1);
- }
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public int getMaxZoom() {
- return 21;
- }
-
- @Override
- public int getMinZoom() {
- return 0;
- }
-
- public String getExtension() {
- return "png";
- }
-
- /**
- * @throws IOException when subclass cannot return the tile URL
- */
- public String getTilePath(int zoom, int tilex, int tiley) throws IOException {
- return "/" + zoom + "/" + tilex + "/" + tiley + "." + getExtension();
- }
-
- public String getBaseUrl() {
- return this.baseUrl;
- }
-
- @Override
- public String getTileUrl(int zoom, int tilex, int tiley) throws IOException {
- return this.getBaseUrl() + getTilePath(zoom, tilex, tiley);
- }
-
- @Override
- public String toString() {
- return getName();
- }
-
- @Override
- public String getTileType() {
- return "png";
- }
-
- @Override
- public int getTileSize() {
- return 256;
- }
-
- @Override
- public double latToTileY(double lat, int zoom) {
- double l = lat / 180 * Math.PI;
- double pf = Math.log(Math.tan(l) + (1 / Math.cos(l)));
- return Math.pow(2.0, zoom - 1) * (Math.PI - pf) / Math.PI;
- }
-
- @Override
- public double lonToTileX(double lon, int zoom) {
- return Math.pow(2.0, zoom - 3) * (lon + 180.0) / 45.0;
- }
-
- @Override
- public double tileYToLat(int y, int zoom) {
- return Math.atan(Math.sinh(Math.PI - (Math.PI * y / Math.pow(2.0, zoom - 1)))) * 180 / Math.PI;
- }
-
- @Override
- public double tileXToLon(int x, int zoom) {
- return x * 45.0 / Math.pow(2.0, zoom - 3) - 180.0;
- }
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.tilesources;
+
+import java.io.IOException;
+
+import org.openstreetmap.gui.jmapviewer.OsmMercator;
+
+public abstract class AbstractTMSTileSource extends AbstractTileSource {
+
+ protected String name;
+ protected String baseUrl;
+
+ public AbstractTMSTileSource(String name, String base_url) {
+ this.name = name;
+ this.baseUrl = base_url;
+ if(baseUrl.endsWith("/")) {
+ baseUrl = baseUrl.substring(0,baseUrl.length()-1);
+ }
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public int getMaxZoom() {
+ return 21;
+ }
+
+ @Override
+ public int getMinZoom() {
+ return 0;
+ }
+
+ public String getExtension() {
+ return "png";
+ }
+
+ /**
+ * @throws IOException when subclass cannot return the tile URL
+ */
+ public String getTilePath(int zoom, int tilex, int tiley) throws IOException {
+ return "/" + zoom + "/" + tilex + "/" + tiley + "." + getExtension();
+ }
+
+ public String getBaseUrl() {
+ return this.baseUrl;
+ }
+
+ @Override
+ public String getTileUrl(int zoom, int tilex, int tiley) throws IOException {
+ return this.getBaseUrl() + getTilePath(zoom, tilex, tiley);
+ }
+
+ @Override
+ public String toString() {
+ return getName();
+ }
+
+ @Override
+ public String getTileType() {
+ return "png";
+ }
+
+ /*
+ * Most tilesources use OsmMercator projection.
+ */
+ @Override
+ public int getTileSize() {
+ return OsmMercator.TILE_SIZE;
+ }
+
+ @Override
+ public double getDistance(double lat1, double lon1, double lat2, double lon2) {
+ return OsmMercator.getDistance(lat1, lon1, lat2, lon2);
+ }
+
+ @Override
+ public int LonToX(double lon, int zoom) {
+ return (int )OsmMercator.LonToX(lon, zoom);
+ }
+
+ @Override
+ public int LatToY(double lat, int zoom) {
+ return (int )OsmMercator.LatToY(lat, zoom);
+ }
+
+ @Override
+ public double XToLon(int x, int zoom) {
+ return OsmMercator.XToLon(x, zoom);
+ }
+
+ @Override
+ public double YToLat(int y, int zoom) {
+ return OsmMercator.YToLat(y, zoom);
+ }
+
+ @Override
+ public double latToTileY(double lat, int zoom) {
+ return OsmMercator.LatToY(lat, zoom) / OsmMercator.TILE_SIZE;
+ }
+
+ @Override
+ public double lonToTileX(double lon, int zoom) {
+ return OsmMercator.LonToX(lon, zoom) / OsmMercator.TILE_SIZE;
+ }
+
+ @Override
+ public double tileYToLat(int y, int zoom) {
+ return OsmMercator.YToLat(y * OsmMercator.TILE_SIZE, zoom);
+ }
+
+ @Override
+ public double tileXToLon(int x, int zoom) {
+ return OsmMercator.XToLon(x * OsmMercator.TILE_SIZE, zoom);
+ }
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTileSource.java
index 9c961f5..66456a6 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/AbstractTileSource.java
@@ -1,78 +1,77 @@
-package org.openstreetmap.gui.jmapviewer.tilesources;
-
-import java.awt.Image;
-
-import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
-import org.openstreetmap.gui.jmapviewer.Coordinate;
-
-//License: GPL. Copyright 2008 by Jan Peter Stotz
-
-abstract public class AbstractTileSource implements TileSource {
-
- protected String attributionText;
- protected String attributionLinkURL;
- protected Image attributionImage;
- protected String attributionImageURL;
- protected String termsOfUseText;
- protected String termsOfUseURL;
-
- @Override
- public boolean requiresAttribution() {
- return attributionText != null || attributionImage != null || termsOfUseText != null || termsOfUseURL != null;
- }
-
- @Override
- public String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight) {
- return attributionText;
- }
-
- @Override
- public String getAttributionLinkURL() {
- return attributionLinkURL;
- }
-
- @Override
- public Image getAttributionImage() {
- return attributionImage;
- }
-
- @Override
- public String getAttributionImageURL() {
- return attributionImageURL;
- }
-
- @Override
- public String getTermsOfUseText() {
- return termsOfUseText;
- }
-
- @Override
- public String getTermsOfUseURL() {
- return termsOfUseURL;
- }
-
- public void setAttributionText(String attributionText) {
- this.attributionText = attributionText;
- }
-
- public void setAttributionLinkURL(String attributionLinkURL) {
- this.attributionLinkURL = attributionLinkURL;
- }
-
- public void setAttributionImage(Image attributionImage) {
- this.attributionImage = attributionImage;
- }
-
- public void setAttributionImageURL(String attributionImageURL) {
- this.attributionImageURL = attributionImageURL;
- }
-
- public void setTermsOfUseText(String termsOfUseText) {
- this.termsOfUseText = termsOfUseText;
- }
-
- public void setTermsOfUseURL(String termsOfUseURL) {
- this.termsOfUseURL = termsOfUseURL;
- }
-
-}
+// License: GPL. For details, see Readme.txt file.
+package org.openstreetmap.gui.jmapviewer.tilesources;
+
+import java.awt.Image;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
+import org.openstreetmap.gui.jmapviewer.Coordinate;
+
+abstract public class AbstractTileSource implements TileSource {
+
+ protected String attributionText;
+ protected String attributionLinkURL;
+ protected Image attributionImage;
+ protected String attributionImageURL;
+ protected String termsOfUseText;
+ protected String termsOfUseURL;
+
+ @Override
+ public boolean requiresAttribution() {
+ return attributionText != null || attributionImage != null || termsOfUseText != null || termsOfUseURL != null;
+ }
+
+ @Override
+ public String getAttributionText(int zoom, Coordinate topLeft, Coordinate botRight) {
+ return attributionText;
+ }
+
+ @Override
+ public String getAttributionLinkURL() {
+ return attributionLinkURL;
+ }
+
+ @Override
+ public Image getAttributionImage() {
+ return attributionImage;
+ }
+
+ @Override
+ public String getAttributionImageURL() {
+ return attributionImageURL;
+ }
+
+ @Override
+ public String getTermsOfUseText() {
+ return termsOfUseText;
+ }
+
+ @Override
+ public String getTermsOfUseURL() {
+ return termsOfUseURL;
+ }
+
+ public void setAttributionText(String attributionText) {
+ this.attributionText = attributionText;
+ }
+
+ public void setAttributionLinkURL(String attributionLinkURL) {
+ this.attributionLinkURL = attributionLinkURL;
+ }
+
+ public void setAttributionImage(Image attributionImage) {
+ this.attributionImage = attributionImage;
+ }
+
+ public void setAttributionImageURL(String attributionImageURL) {
+ this.attributionImageURL = attributionImageURL;
+ }
+
+ public void setTermsOfUseText(String termsOfUseText) {
+ this.termsOfUseText = termsOfUseText;
+ }
+
+ public void setTermsOfUseURL(String termsOfUseURL) {
+ this.termsOfUseURL = termsOfUseURL;
+ }
+
+}
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java
index 1ce79da..a4cbc16 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/BingAerialTileSource.java
@@ -1,7 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.tilesources;
-//License: GPL.
-
import java.awt.Image;
import java.io.IOException;
import java.net.MalformedURLException;
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/MapQuestOpenAerialTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/MapQuestOpenAerialTileSource.java
index 2599163..e48e88d 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/MapQuestOpenAerialTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/MapQuestOpenAerialTileSource.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.tilesources;
import org.openstreetmap.gui.jmapviewer.Coordinate;
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/MapQuestOsmTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/MapQuestOsmTileSource.java
index 56c2359..30f6288 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/MapQuestOsmTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/MapQuestOsmTileSource.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.tilesources;
import org.openstreetmap.gui.jmapviewer.Coordinate;
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java
index be0bc1c..3d6bf70 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.tilesources;
/**
@@ -42,7 +43,7 @@ public class OsmTileSource {
* Constructs a new {@code CycleMap} tile source.
*/
public CycleMap() {
- super("OSM Cycle Map", PATTERN);
+ super("Cyclemap", PATTERN);
}
@Override
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
index 4d20822..fd48b29 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
@@ -1,10 +1,26 @@
+// License: BSD or GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.tilesources;
import java.util.Random;
import org.openstreetmap.gui.jmapviewer.OsmMercator;
-public class ScanexTileSource extends AbstractTMSTileSource {
+/*
+ * This tilesource uses different to OsmMercator projection.
+ *
+ * Earth is assumed an ellipsoid in this projection, unlike
+ * sphere in OsmMercator, so latitude calculation differs
+ * a lot.
+ *
+ * The longitude calculation is the same as in OsmMercator,
+ * we inherit it from AbstractTMSTileSource.
+ *
+ * TODO: correct getDistance() method.
+ */
+
+public class ScanexTileSource extends TMSTileSource {
+ private static final String DEFAULT_URL = "http://maps.kosmosnimki.ru";
+ private static final int DEFAULT_MAXZOOM = 14;
private static String API_KEY = "4018C5A9AECAD8868ED5DEB2E41D09F7";
private enum ScanexLayer {
@@ -29,23 +45,24 @@ public class ScanexTileSource extends AbstractTMSTileSource {
/* IRS by default */
private ScanexLayer Layer = ScanexLayer.IRS;
- public ScanexTileSource(String url) {
- super("Scanex " + url, "http://maps.kosmosnimki.ru");
+ public ScanexTileSource(String name, String url, int maxZoom) {
+ super(name, url, maxZoom);
for (ScanexLayer layer : ScanexLayer.values()) {
if (url.equalsIgnoreCase(layer.getName())) {
this.Layer = layer;
+ /*
+ * Override baseUrl and maxZoom in base class.
+ */
+ this.baseUrl = DEFAULT_URL;
+ if (maxZoom == 0)
+ this.maxZoom = DEFAULT_MAXZOOM;
break;
}
}
}
@Override
- public int getMaxZoom() {
- return 14;
- }
-
- @Override
public String getExtension() {
return("jpeg");
}
@@ -64,11 +81,25 @@ public class ScanexTileSource extends AbstractTMSTileSource {
return TileUpdate.IfNoneMatch;
}
+
+ /*
+ * Latitude to Y and back calculations.
+ */
private static double RADIUS_E = 6378137; /* radius of Earth at equator, m */
private static double EQUATOR = 40075016.68557849; /* equator length, m */
private static double E = 0.0818191908426; /* eccentricity of Earth's ellipsoid */
@Override
+ public int LatToY(double lat, int zoom) {
+ return (int )(latToTileY(lat, zoom) * OsmMercator.TILE_SIZE);
+ }
+
+ @Override
+ public double YToLat(int y, int zoom) {
+ return tileYToLat((double )y / OsmMercator.TILE_SIZE, zoom);
+ }
+
+ @Override
public double latToTileY(double lat, int zoom) {
double tmp = Math.tan(Math.PI/4 * (1 + lat/90));
double pow = Math.pow(Math.tan(Math.PI/4 + Math.asin(E * Math.sin(Math.toRadians(lat)))/2), E);
@@ -77,8 +108,8 @@ public class ScanexTileSource extends AbstractTMSTileSource {
}
@Override
- public double lonToTileX(double lon, int zoom) {
- return (RADIUS_E * lon * Math.PI / (90*EQUATOR) + 1) * Math.pow(2.0, zoom - 1);
+ public double tileYToLat(int y, int zoom) {
+ return tileYToLat((double )y, zoom);
}
/*
@@ -89,24 +120,21 @@ public class ScanexTileSource extends AbstractTMSTileSource {
* value.
*/
private double cached_lat = 0;
-
- @Override
- public double tileYToLat(int y, int zoom) {
- Random r= new Random();
+ private double tileYToLat(double y, int zoom) {
double lat0, lat;
- lat = cached_lat;
- do {
- lat0 = lat;
+ lat = cached_lat;
+ do {
+ lat0 = lat;
lat = lat - Math.toDegrees(NextTerm(Math.toRadians(lat), y, zoom));
if (lat > OsmMercator.MAX_LAT || lat < OsmMercator.MIN_LAT) {
+ Random r = new Random();
lat = OsmMercator.MIN_LAT +
- (double )r.nextInt((int )(OsmMercator.MAX_LAT -
- OsmMercator.MIN_LAT));
+ r.nextInt((int )(OsmMercator.MAX_LAT - OsmMercator.MIN_LAT));
}
- } while ((Math.abs(lat0 - lat) > 0.000001));
+ } while ((Math.abs(lat0 - lat) > 0.000001));
- cached_lat = lat;
+ cached_lat = lat;
return (lat);
}
@@ -115,21 +143,16 @@ public class ScanexTileSource extends AbstractTMSTileSource {
private double NextTerm(double lat, double y, int zoom) {
double sinl=Math.sin(lat);
double cosl=Math.cos(lat);
- double ec, f, df;
+ double ec, f, df;
zoom = (int )Math.pow(2.0, zoom - 1);
- ec = Math.exp((1 - y/zoom)*Math.PI);
+ ec = Math.exp((1 - y/zoom)*Math.PI);
- f = (Math.tan(Math.PI/4+lat/2) -
- ec * Math.pow(Math.tan(Math.PI/4 + Math.asin(E * sinl)/2), E));
+ f = (Math.tan(Math.PI/4+lat/2) -
+ ec * Math.pow(Math.tan(Math.PI/4 + Math.asin(E * sinl)/2), E));
df = 1/(1 - sinl) - ec * E * cosl/((1 - E * sinl) *
(Math.sqrt (1 - E * E * sinl * sinl)));
return (f/df);
}
-
- @Override
- public double tileXToLon(int x, int zoom) {
- return (x / Math.pow(2.0, zoom - 1) - 1) * (90*EQUATOR) / RADIUS_E / Math.PI;
- }
}
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/TMSTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/TMSTileSource.java
index d85d0ff..f22c0ac 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/TMSTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/TMSTileSource.java
@@ -1,11 +1,6 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.tilesources;
-//License: GPL.
-
-import java.awt.Image;
-
-import org.openstreetmap.gui.jmapviewer.Coordinate;
-
public class TMSTileSource extends AbstractTMSTileSource {
protected int maxZoom;
@@ -35,5 +30,4 @@ public class TMSTileSource extends AbstractTMSTileSource {
public TileUpdate getTileUpdate() {
return TileUpdate.IfNoneMatch;
}
-
}
diff --git a/src/org/openstreetmap/gui/jmapviewer/tilesources/TemplatedTMSTileSource.java b/src/org/openstreetmap/gui/jmapviewer/tilesources/TemplatedTMSTileSource.java
index 2717dfe..9113813 100644
--- a/src/org/openstreetmap/gui/jmapviewer/tilesources/TemplatedTMSTileSource.java
+++ b/src/org/openstreetmap/gui/jmapviewer/tilesources/TemplatedTMSTileSource.java
@@ -1,3 +1,4 @@
+// License: GPL. For details, see Readme.txt file.
package org.openstreetmap.gui.jmapviewer.tilesources;
import java.util.Map;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/jmapviewer.git
More information about the Pkg-grass-devel
mailing list