Marble: Difference between revisions

From KDE TechBase
(add valgrind section)
(Remove links to pages moved to community wiki)
 
(122 intermediate revisions by 17 users not shown)
Line 1: Line 1:
{{Template:I18n/Language Navigation Bar|Projects/Marble}}


__NOTOC__
 
[[Image:Marble_logo.png]]
[[Image:Marble_logo.png]]


Line 7: Line 6:
;[[/FAQ|Marble FAQ]]
;[[/FAQ|Marble FAQ]]


== Examples of Use ==
== Success Stories: 3rd party applications using the Marble Library==
;[[/MarbleUsedBy|Applications using the Marble library]]
;[[/MarbleUsedBy|Software that makes use of Marble]]


== Using the Marble Widget in other applications ==
== Tutorials: How to use the Marble Widget in your application ==
;[[/MarbleDesigner|with QtDesigner]]
;[[/MarbleDesigner|with Qt Designer]]
;[[/MarbleCPlusPlus|with C++]]
;[[/MarbleWindows|On Windows, with Qt Creator/Qt Designer]]
;[[/MarblePython|with Python]]


;[[/MarbleDBus|via a shell script]]
=== With C++ ===
==== Intro ====
;[[/MarbleCPlusPlus|Hello World]]
;[[/MarbleMarbleWidget|Changing basic map properties]]
;[[/MarbleSignalsSlots|Creating a window with controls]]


== How to become a Marble developer ("Marblehead") ==
==== GeoData ====
;[[/Runners/DisplayGeoDataPlacemark|Displaying GeoData Documents]]


=== So you are new to Marble development ... ===
==== Online Services ====
;[[/OnlineServices|Creating new Online Services]]


<b>Welcome!</b>
==== Routing ====
;[[/Routing/BasicRouting|Basic Routing]]


Here you'll get all the information you need to start Marble development:
==== Runners ====
;[[/Runners/Search|Searching for Points of Interest]]
;[[/Runners/ReverseGeocoding|Reverse Geocoding]]
;[[/Runners/Parse|Parsing Files]]


;[[/GoMarble|How to become a Marble Developer]]
==== GeoPainter ====
;[[/MarbleGeoPainter|Painting onto the map]]
;[[/LayerInterface|Drawing in Custom Layers]]
;[[/Runners/PaintingGeoDataLineString|Painting LineString]]


== Packaging Marble ==
=== With Python ===
==== Intro ====
;[http://techbase.kde.org/Projects/Marble/MarblePythonInstructions Installing Marble's Python bindings]
;[[/MarblePythonHello|Hello World]]
;[[/MarblePythonMarbleWidget|Changing basic map properties]]
;[[/MarblePythonSignalsSlots|Creating a window with controls]]


Here is some advice about how packaging is supposed to happen on the various plattforms that are supported.
==== Loading Files ====
;[[/Runners/MarblePythonLoadingKML|Loading KML files into Marble]]
;[[/Runners/MarblePythonLoadingOSM|Loading OSM files into Marble]]


===General===
==== GeoData ====
;[[/Runners/MarblePythonDisplayGeoDataPlacemark|Display GeoData Placemark]]
;[[/Runners/MarblePythonVehicleTracking|Vehicle Tracking]]


===Linux===
==== Routing/Runners ====
This part of the Python API has not yet been ported and the tutorials could not be completed. [https://bugs.kde.org/show_bug.cgi?id=329364 see this bug for more info].


===Mac OS X===
==== GeoPainter ====
;[[/Routing/MarblePythonGeoPainter|Painting onto the map]]
;[[/MarblePythonLayerInterface|Drawing in Custom Layers]]


==== Qt-Only ====


Configure Marble with:
;[[/MarbleDBus|via a shell script]]
<pre>
cmake -DCMAKE_BUILD_TYPE=release -DQTONLY=ON -DCMAKE_INSTALL_PREFIX=/Applications/ ../marble
</pre>
 
To generate a Diskimage (.dmg) one can use this script (based on parts by Tim Sutton, thanks!):
 
<code bash>
VERSION=0.7.1
APPNAME=Marble
 
VOLNAME=${APPNAME}-${VERSION}
DMGNAME=${VOLNAME}Uncompressed.dmg
COMPRESSEDDMGNAME=${VOLNAME}.dmg
 
function deploy_file() {
for n in $(otool -L $1 | grep Qt); do
path=`echo $n | grep Qt`
    if [ $path ] ; then
    name=$(basename $path)
FRAMEWORKS="$FRAMEWORKS $name"
fi
done
 
for framework in $FRAMEWORKS ; do
install_name_tool -change \
$framework.framework/Versions/4/$framework \
@executable_path/../Frameworks/$framework.framework/Versions/4/$framework \
$1
done
}
 
function deploy_plugins() {
for plugin in $1/Contents/Resources/plugins/*; do
deploy_file $plugin
done
}
 
function set_bundle_display_options() {
osascript <<-EOF
    tell application "Finder"
        set f to POSIX file ("${1}" as string) as alias
        tell folder f
            open
            tell container window
                set toolbar visible to false
                set statusbar visible to false
                set current view to icon view
                delay 1 -- sync
                set the bounds to {20, 50, 300, 400}
            end tell
            delay 1 -- sync
            set icon size of the icon view options of container window to 64
            set arrangement of the icon view options of container window to not arranged
            set position of item "Marble.app" to {100,150}
            set position of item "Applications" to {280, 150}
            set background picture of the icon view options of container window to file "background.png" of folder "Pictures"
            set the bounds of the container window to {0, 0, 300, 400}
            update without registering applications
            delay 5 -- sync
            close
        end tell
        delay 5 -- sync
    end tell
EOF
 
}
 
function create_symlinks() {
cd "$1/Contents/Resources"
ln -s "../MacOS/resources/data/"    "data"
ln -s "../MacOS/resources/plugins/" "plugins"
cd -
}
 
 
 
 
rm ~/Desktop/${DMGNAME}
rm ~/Desktop/${COMPRESSEDDMGNAME}
hdiutil create -size 150m -fs HFS+ -volname ${VOLNAME} ~/Desktop/${DMGNAME}
 
# Mount the disk image
hdiutil attach ~/Desktop/${DMGNAME}
 
# Obtain device information
DEVS=$(hdiutil attach ~/Desktop/${DMGNAME} | cut -f 1)
DEV=$(echo $DEVS | cut -f 1 -d ' ')
VOLUME=$(mount |grep ${DEV} | cut -f 3 -d ' ')
 
# copy in the application bundle
cp -Rp /Applications/${APPNAME}.app ${VOLUME}/${APPNAME}.app
 
# fix the libs
macdeployqt ${VOLUME}/${APPNAME}.app
create_symlinks ${VOLUME}/${APPNAME}.app
deploy_file "${VOLUME}/${APPNAME}.app/Contents/MacOS/lib/libmarblewidget.7.dylib"
deploy_plugins ${VOLUME}/${APPNAME}.app
 
# copy in background image
mkdir -p ${VOLUME}/Pictures
# fixme: path
cp ~/Desktop/marble-dmg-background.png ${VOLUME}/Pictures/background.png
# symlink applications
ln -s /Applications/ ${VOLUME}/Applications
set_bundle_display_options ${VOLUME}
mv ${VOLUME}/Pictures ${VOLUME}/.Pictures
 
# Unmount the disk image
hdiutil detach $DEV
# Convert the disk image to read-only
hdiutil convert ~/Desktop/${DMGNAME} -format UDBZ -o ~/Desktop/${COMPRESSEDDMGNAME}
</code>
 
 
It uses the macdeployqt tool which copies Qt and its plugins into the App Bundle.
macdeployqt also tells the main application to link against the libs contained in the bundle, instead of the system libs.
This does not happen to the libmarblewidget and the Marble plugins, so it has to be done by the script.
The script also sets a background Image for the dmg. (Place it at ~/Desktop/marble-dmg-background.png or change the path in the script)
 
After that you should have Marble-version.dmg on you Desktop.
 
===Windows===
 
== Programming Coordination ==
 
Here are a few links to various issues we are working on:
 
=== User Interface ===
;[[/Mockups|Mockups]]
 
=== Texture Mapping ===
;[[/TextureNG|Texture Mapping]]
 
=== GeoData Library / KML ===
;[[/LibGeoData|GeoData Library]]
;[[/KMLStatus|KML Status]]
;[[/GPXStatus|GPX Status]]
 
=== GeoPainter / DGML ===
;[[/GeoPainter|GeoPainter]]
;[[/Dgml|DGML]]


=== Marble Runner ===
=== Marble Runner ===
Line 188: Line 68:
;[[/RunnerHOWTO|Runner HOWTO]]
;[[/RunnerHOWTO|Runner HOWTO]]


=== Projections ===
=== Documentation ===
;[[/WinkelIii|Winkel III]]
Creating '''Custom Marble Map Themes'''
;[[/OSMSlippyMaps|How to integrate OSM "slippy" maps into Marble]]
;[[/HistoricalMaps|How to create Historical Map Themes]]
;[[/CustomPlanetMaps|How to create maps for other planets, moons etc.]]


=== Tile Download ===
;[[/CustomMaps|Reference: How to customize maps]]
;[[/TileDownload|Tile Download]]


=== Documentation ===
;[[/PalaeoMaps|Global Palaeogeography]]
;[[/ApiDocs|API Docs]]
 
;[[/CustomMaps|How to customize maps]]
;[[/PNTFiles|How to change the PNT files used by Marble]]
;[[/MarblesSecrets|Marble's Secrets]]
;[[/MarblesSecrets|Marble's Secrets]]
;[[/ProxyConnection|How to use the Proxy]]
;[[/ProxyConnection|How to use the Proxy]]


=== GeoClue / GPS ===
== Maps ==
;[[/GeoClue|GeoClue support in Marble]]
=== OSM Vector Map ===
 
;[[/OSMVectorCompile|How to compile Marble with vector support]]
== Mapping Coordination ==
;[[/OSMVectorTileCreation|How to build tiles]]
=== Documentation ===
;[[/HistoricalMaps|How to create Historical Maps]]
 
;[[/PalaeoMaps|Global Palaeogeography]]


== Routing ==
== Routing ==
;[[/RoutingIdeas|General ideas about routing]]
;[[/OnlineRoutingImplementation|Implementation of Online-Routing]]
 
;[[/MaemoOfflineRouting|Installation of Marble and Gosmore on Maemo]]
== valgrind logs ==
;[[/ValgrindLogs|if you want to fix memory leaks, valgrind logs can be found here]]
 
== Meetings ==
Summaries and logs of scheduled Marble meetings can be found on the following pages:
;[[/MarbleMeeting20081029|Wednesday Nov. 10th, 2008]]

Latest revision as of 10:27, 21 October 2016


About Marble

Marble FAQ

Success Stories: 3rd party applications using the Marble Library

Software that makes use of Marble

Tutorials: How to use the Marble Widget in your application

with Qt Designer
On Windows, with Qt Creator/Qt Designer

With C++

Intro

Hello World
Changing basic map properties
Creating a window with controls

GeoData

Displaying GeoData Documents

Online Services

Creating new Online Services

Routing

Basic Routing

Runners

Searching for Points of Interest
Reverse Geocoding
Parsing Files

GeoPainter

Painting onto the map
Drawing in Custom Layers
Painting LineString

With Python

Intro

Installing Marble's Python bindings
Hello World
Changing basic map properties
Creating a window with controls

Loading Files

Loading KML files into Marble
Loading OSM files into Marble

GeoData

Display GeoData Placemark
Vehicle Tracking

Routing/Runners

This part of the Python API has not yet been ported and the tutorials could not be completed. see this bug for more info.

GeoPainter

Painting onto the map
Drawing in Custom Layers


via a shell script

Marble Runner

Coordinate Runner
OSM Runner
Runner HOWTO

Documentation

Creating Custom Marble Map Themes

How to integrate OSM "slippy" maps into Marble
How to create Historical Map Themes
How to create maps for other planets, moons etc.
Reference: How to customize maps
Global Palaeogeography
How to change the PNT files used by Marble
Marble's Secrets
How to use the Proxy

Maps

OSM Vector Map

How to compile Marble with vector support
How to build tiles

Routing

Implementation of Online-Routing
Installation of Marble and Gosmore on Maemo