Git Product home page Git Product logo

merkaartor's Introduction

Merkaartor

An opensource OSM editor, written in C++ and Qt.

Health status

Travis-CI (Linux, Windows and Mac OS X) Build Status

Installation

Binaries

Binary installation files are available for various Linux distributions and Windows.

These Linux distributions are known to provide current versions of Merkaartor:

The Windows installer and Mac OS X bundle is available on the website: http://merkaartor.be/p/download

Source

You can clone this repository to obtain the current development version, or checkout a specific release (all of them are tagged). Detailed instructions can be found in the COMPILE.md file in this directory.

Nightly builds

For Windows and Mac OS X, nightly builds are automatically generated using Travis-CI, uploaded to cloudsmith:

https://cloudsmith.io/~merkaartor/repos/merkaartor-nightly/packages/

There are currently no nightlies for Linux. It's usually easy to compile from source, and the vast amount of distributions doesn't make it easy. I'm considering making Ubuntu PPA. Let us know if you're interested!

Hacking the code

I'm always happy to see improvements done by other people. Feel free to contribute by sending pull requests for big or small stuff! There is some (very little, but it'll grow) useful stuff in HACKING.md, but if you have questions, contacts us on [email protected] to have them answered!

Thank you!

The following projects provide valuable services for Merkaartor (and other opensource projects) for free:

  • github.com free repository hosting and issue tracking
  • travis-ci.org free continuous integration and testing on Linux, Windows and MacOS
  • cloudsmith.io free binary hosting for nightly builds

merkaartor's People

Contributors

agentydragon avatar amalon avatar bzed avatar comradekingu avatar deejay1 avatar derdakon avatar elgaard avatar ggrau avatar jarl-dk avatar jgmbenoit avatar jktjkt avatar koying avatar krakonos avatar krillegh avatar ladislavozobot avatar leite avatar leplatrem avatar norbertwenzel avatar richardbrinkman avatar sebastic avatar sikmir avatar slankes avatar tms13 avatar tnixeu avatar trav-c avatar tunp avatar wegank avatar xtompok avatar z3ntu avatar zander avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

merkaartor's Issues

Geotif not displaying Windows 64B

Hello,
I'm trying to load a geotif but the image doesn't appear. (Same for a bing backgroung). But when I zoom to the image, it does go to the correct coordinates.
I'm using a windows 64B PC.
Anyone a suggestion?
Thanks in advance.

Render names according to user's language

Another features request from a user of the merkaartor Debian package.
Forwarded from Debian Bug #575060

On Tue, 23 Mar 2010 15:31:53 +0800 Paul Wise [email protected] wrote:

It would be nice if merkaartor could use $LANG to decide which language
to draw names (and other strings) on the map. As an example:

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='Merkaartor'>
<bound box='18.789139,98.985725,18.789139,98.985725' origin='http://www.openstreetmap.org/api/0.6' />
  <node id="178056220" lat="18.78913903" lon="98.98572463">
    <tag k="is_in:continent" v="Asia"/>
    <tag k="is_in:country" v="Thailand"/>
    <tag k="is_in:district" v="Chiang Mai"/>
    <tag k="is_in:province" v="Chiang Mai"/>
    <tag k="name" v="เชียงใหม่"/>
    <tag k="name:en" v="Chiang Mai"/>
    <tag k="name:th" v="เชียงใหม่"/>
    <tag k="place" v="city"/>
    <tag k="population" v="140000"/>
    <tag k="source" v="Wikipedia"/>
  </node>
</osm>

This is a city I visited in Thailand when I went to the recent Thai
MiniDebCamp. The English name is Chiang Mai and the Thai name I cannot
read due to the script being different. It would be nice if merkaartor
would render name:en for me and name:th for Thai users.

http://wiki.debian.org/DebianThailand/MiniDebCamp2010

Segfault in undo list

This editing session was created by loading a saved file.
Crash occurred after moving just created node that was part of a new way.
That particular node did not want to move well. By moving it, it just did not move or did not move along all the way.

backtrace:

#0  0x0000000002bba930 in ?? ()
#1  0x000000000058487f in CommandHistory::buildUndoList (this=0x2bc36f0, theList=
    0x10ab430) at Commands/Command.cpp:442
#2  0x00000000005ce250 in DirtyDock::updateList (this=0xff0f20)
    at Docks/DirtyDock.cpp:78
#3  0x00000000006a9d06 in DirtyDock::qt_static_metacall (_o=0xff0f20, 
    _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fffffffca40)
    at debug/moc_DirtyDock.cpp:60
#4  0x00007ffff2bf538c in QMetaObject::activate (sender=0x1047df0, 
    m=<optimized out>, local_signal_index=<optimized out>, argv=0x0)
    at kernel/qobject.cpp:3567
#5  0x00000000006a3f7f in Document::historyChanged (this=0x1047df0)
    at debug/moc_Document.cpp:139
#6  0x0000000000454798 in Document::addHistory (this=0x1047df0, aCommand=0x28ad890)
    at common/Document.cpp:341
#7  0x00000000005b16a5 in MoveNodeInteraction::snapMouseReleaseEvent (
    this=0x2bbe110, event=0x7fffffffd230, Closer=0x0)
    at Interactions/MoveNodeInteraction.cpp:238
#8  0x00000000005af07f in FeatureSnapInteraction::mouseReleaseEvent (this=
    0x2bbe110, event=0x7fffffffd230) at Interactions/Interaction.cpp:378
#9  0x000000000047fd49 in MapView::mouseReleaseEvent (this=0xd73500, 
    anEvent=0x7fffffffd230) at common/MapView.cpp:707
#10 0x00007ffff34b7af8 in QWidget::event (this=0xd73500, event=0x7fffffffd230)
    at kernel/qwidget.cpp:8775
#11 0x00007ffff34617bc in QApplicationPrivate::notify_helper (
    this=this@entry=0xad5fb0, receiver=receiver@entry=0xd73500, 
    e=e@entry=0x7fffffffd230) at kernel/qapplication.cpp:4570
#12 0x00007ffff346843f in QApplication::notify (this=<optimized out>, 
    receiver=0xd73500, e=0x7fffffffd230) at kernel/qapplication.cpp:4113
#13 0x00007ffff2be036d in QCoreApplication::notifyInternal (this=0x7fffffffd9d0, 
    receiver=receiver@entry=0xd73500, event=event@entry=0x7fffffffd230)
    at kernel/qcoreapplication.cpp:955
#14 0x00007ffff3467a9f in sendEvent (event=<optimized out>, 
    receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#15 QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0xd73500, 
    event=event@entry=0x7fffffffd230, alienWidget=alienWidget@entry=0xd73500, 
    nativeWidget=nativeWidget@entry=0x7fffffffda20, 
    buttonDown=buttonDown@entry=0x7ffff3f8c5a8 <qt_button_down>, 
    lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3178
#16 0x00007ffff34e1832 in QETWidget::translateMouseEvent (
    this=this@entry=0x7fffffffda20, event=event@entry=0x7fffffffd590)
    at kernel/qapplication_x11.cpp:4546
#17 0x00007ffff34e022c in QApplication::x11ProcessEvent (this=0x7fffffffd9d0, 
    event=event@entry=0x7fffffffd590) at kernel/qapplication_x11.cpp:3663
#18 0x00007ffff35092d2 in x11EventSourceDispatch (s=0xad8720, callback=0x0, 
    user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#19 0x00007fffea015c3d in g_main_context_dispatch ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007fffea015f20 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007fffea015fcc in g_main_context_iteration ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007ffff2c0f98d in QEventDispatcherGlib::processEvents (this=0xaa6db0, 
    flags=...) at kernel/qeventdispatcher_glib.cpp:425
#23 0x00007ffff3509396 in QGuiEventDispatcherGlib::processEvents (
    this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#24 0x00007ffff2bdeec1 in QEventLoop::processEvents (this=this@entry=
    0x7fffffffd970, flags=...) at kernel/qeventloop.cpp:149
#25 0x00007ffff2bdf225 in QEventLoop::exec (this=this@entry=0x7fffffffd970, 
    flags=...) at kernel/qeventloop.cpp:204
#26 0x00007ffff2be4ca9 in QCoreApplication::exec ()
    at kernel/qcoreapplication.cpp:1227
#27 0x0000000000669614 in main (argc=1, argv=0x7fffffffe388) at Main.cpp:309

core: https://app.box.com/s/o2s2rv8qyto539ddsuy3q8erfxqsup1e

"make release" does not work!

I'm trying to build a version of Merkaartor that can be installed into my Linux system.

I did so using "make release" (which, by the way, is documented nowhere!) and this doesn't work at all. I still get a build that tries to search for the plugins at a path that doesn't exist at all...

Implement way split in crossings

Currently, when two ways share a node as their inner node, the way cannot be split easily. This is bad when you are making a relation needing the split. This should be fairly straightforward to fix.

(Note: you can split the way if you select both the node and the way, but just a node should result in splitting all ways sharing it.)

Implement crash recovery/autosave

In the old redmine bug 2818, pabs suggested:

It would be nice if merkaartor would periodically automatically save to a local file any edits I made to the map. Then when it starts up it could load them again. I sometimes get infinite loops or crashes from merkaartor so this would help prevent data loss. Sometimes I need to reboot in the middle of a map editing session.


autosave would be easy way out, as the functionality is already implemented, but the save takes way too long to do it often. I will probably implement it before I have time to implement better solution.

SpatialiteBackend relies on deprecated spatalite_init() method

All software built on top of libspatialite needs to stop using the deprecated spatialite_init() method in favour of its thread-safe variant spatialite_init_ex().

Recently libspatialite (4.1.1) was rebuilt in Debian with PROJ.4 4.9.1 whose new threading engine causes segfaults in libspatialite when the deprecated spatialite_init() method is used (see for example Debian Bug #785091 & #790224)

Please refer to the How to correctly initialize SQLite/SpatiaLite therad safe connections thread on the spatialite-users list for details of the new spatialite_init_ex() API.

Some more information is available in the threads on gdal-dev & qgis-developer.

OSM download dialog blocks the user interface

Feature request from a user of the merkaartor Debian package.
Forwarded from Debian Bug #575061 & OSM Trac #2849

On Tue, 23 Mar 2010 15:38:13 +0800 Paul Wise [email protected] wrote:

When I click on "Download more", I get a dialog that blocks UI
interaction. This should be changed to a status bar message so that it
doesn't block UI interaction. When the download completes the map and UI
elements should be automatically updated.

Fix & document Windows build system

The Windows build is mostly working, but waits for the Qt 5.4.2, which fixes a bug in QtNetworking, causing crash on non-debug builds (patch is already accepted). Merkaartor builds fine with MSYS2 on 64bit systems, but is not at all tested on 32bits, and the process is documented in INSTALL since 2481d3a (qt5 branch). More testing is required though.

Add proper SSL exception handling.

The SSL may encounter exception (especially wrong certificates), which are not handled. Some sensible way to handle these should be provided, but are not critical (unless someone is experiencing problems with it, in that case, let me know).

Segfault on uploading changeset

This is new and seems to happen quite often (although not always). Uploading of changeset completes correctly, but something segfaults after that, when the changes are being downloaded from the server.

Downloader::request: QUrl( "http://www.openstreetmap.org/api/0.6/changeset/30167713/upload" )
"Upload: rCode (200); Msg ()"
"CLOSE changeset"
Downloader::request: QUrl( "http://www.openstreetmap.org/api/0.6/changeset/30167713/close" )
Segmentation fault

Not much saying backtrace: 
#0  0x00007ffff35bac07 in QMetaObject::cast(QObject*) const () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#1  0x00007ffff35408e6 in QNonContiguousByteDeviceFactory::create(QIODevice*) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#2  0x00007ffff3982ad7 in ?? () from /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4
#3  0x00007ffff398c6fd in ?? () from /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4
#4  0x00007ffff398329e in ?? () from /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4
#5  0x00007ffff399da5f in ?? () from /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4
#6  0x00007ffff399e6f9 in ?? () from /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4
#7  0x00007ffff35cd641 in QObject::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#8  0x00007ffff3e3529c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#9  0x00007ffff3e3bda8 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#10 0x00007ffff35b3f8d in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#11 0x00007ffff35b7821 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#12 0x00007ffff35e33a3 in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#13 0x00007fffeaee0355 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007fffeaee0688 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007fffeaee0744 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007ffff35e34ed in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#17 0x00007ffff3ed9b96 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#18 0x00007ffff35b2ae1 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#19 0x00007ffff35b2e45 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#20 0x00007ffff43095fc in QDialog::exec() () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#21 0x00007ffff4329290 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#22 0x00007ffff432941f in QMessageBox::warning(QWidget*, QString const&, QString const&, QFlags<QMessageBox::StandardButton>, QMessageBox::StandardButton) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#23 0x000000000068e164 in MainWindow::syncOSM(QString const&, QString const&, QString const&) () at MainWindow.cpp:4539
#24 0x0000000000678027 in MainWindow::on_fileUploadAction_triggered() () at MainWindow.cpp:2025
#25 0x00000000006b24cd in MainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
    at moc_MainWindow.cpp:407
#26 0x00000000006b364f in MainWindow::qt_metacall(QMetaObject::Call, int, void**) () at moc_MainWindow.cpp:578
#27 0x00007ffff35c92eb in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#28 0x00007ffff3e2eaf2 in QAction::triggered(bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#29 0x00007ffff3e30677 in QAction::activate(QAction::ActionEvent) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#30 0x00007ffff42063e3 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#31 0x00007ffff4206534 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#32 0x00007ffff42c84da in QToolButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#33 0x00007ffff3e884d8 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#34 0x00007ffff3e3529c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#35 0x00007ffff3e3bf0f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#36 0x00007ffff35b3f8d in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#37 0x00007ffff3e3b56f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#38 0x00007ffff3eb20a2 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#39 0x00007ffff3eb0a9c in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#40 0x00007ffff3ed9ad2 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#41 0x00007fffeaee0355 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#42 0x00007fffeaee0688 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#43 0x00007fffeaee0744 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#44 0x00007ffff35e3507 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#45 0x00007ffff3ed9b96 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#46 0x00007ffff35b2ae1 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#47 0x00007ffff35b2e45 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#48 0x00007ffff35b88b9 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#49 0x0000000000668334 in main () at Main.cpp:288
#23 0x000000000068e164 in MainWindow::syncOSM(QString const&, QString const&, QString const&) () at MainWindow.cpp:4539
4539                                                 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) {
#24 0x0000000000678027 in MainWindow::on_fileUploadAction_triggered() () at MainWindow.cpp:2025
2025        syncOSM(M_PREFS->getOsmApiUrl(), M_PREFS->getOsmUser(), M_PREFS->getOsmPassword());

Implement pre-upload check

In the old redmine bug 2935, tms13 suggested:

Presently, if you try to upload a way with more than 2000 nodes, the server will refuse the upload. We ought to be able to detect this before upload and save the user some time and annoyance. There may be other errors we could anticipate, too.

Segfault on merging virtual node with existing node

Segfault on merging virtual node with existing node (by moving virtual node to existing node position).
(gdb) backtrace

#0  0x0000000000cbf810 in ?? ()
#1  0x00000000004ccbd6 in Way::pixelDistanceNode (this=0x2b1f220, Target=..., 
    ClearEndDistance=7.0099999999999998, theView=0xd56dc0, NoSnap=..., 
    NoSelectVirtuals=false) at Features/Way.cpp:599
#2  0x00000000005acb68 in Interaction::updateSnap (this=0x2b46c30, event=
    0x7fffffffd070) at Interactions/Interaction.cpp:278
#3  0x000000000066c7c6 in MainWindow::eventFilter (this=0x7fffffffd860, event=
    0x7fffffffd070) at MainWindow.cpp:851
#4  0x00007ffff2beb886 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=this@entry=0xabda60, receiver=receiver@entry=0xd56dc0, 
    event=event@entry=0x7fffffffd070) at kernel/qcoreapplication.cpp:1065
#5  0x00007ffff346c46c in QApplicationPrivate::notify_helper (
    this=this@entry=0xabda60, receiver=receiver@entry=0xd56dc0, 
    e=e@entry=0x7fffffffd070) at kernel/qapplication.cpp:4566
#6  0x00007ffff347310f in QApplication::notify (this=<optimized out>, 
    receiver=0xd56dc0, e=0x7fffffffd070) at kernel/qapplication.cpp:4113
#7  0x00007ffff2beb71d in QCoreApplication::notifyInternal (this=
    0x7fffffffd810, receiver=receiver@entry=0xd56dc0, 
    event=event@entry=0x7fffffffd070) at kernel/qcoreapplication.cpp:955
#8  0x00007ffff347276f in sendEvent (event=<optimized out>, 
    receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#9  QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0xd56dc0, 
    event=event@entry=0x7fffffffd070, alienWidget=alienWidget@entry=0xd56dc0, 
    nativeWidget=nativeWidget@entry=0x7fffffffd860, 
    buttonDown=buttonDown@entry=0x7ffff3f91538 <qt_button_down>, 
    lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3178
#10 0x00007ffff34e9432 in QETWidget::translateMouseEvent (
    this=this@entry=0x7fffffffd860, event=event@entry=0x7fffffffd3d0)
    at kernel/qapplication_x11.cpp:4540
#11 0x00007ffff34e7e2c in QApplication::x11ProcessEvent (this=0x7fffffffd810, 
    event=event@entry=0x7fffffffd3d0) at kernel/qapplication_x11.cpp:3663
#12 0x00007ffff3510ed2 in x11EventSourceDispatch (s=0xac01e0, callback=0x0, 
    user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#13 0x00007fffea5cdc5d in g_main_context_dispatch ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007fffea5cdf48 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007fffea5cdffc in g_main_context_iteration ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007ffff2c1ad1d in QEventDispatcherGlib::processEvents (this=0xaa2e20, 
    flags=...) at kernel/qeventdispatcher_glib.cpp:425
#17 0x00007ffff3510f96 in QGuiEventDispatcherGlib::processEvents (
    this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#18 0x00007ffff2bea271 in QEventLoop::processEvents (this=this@entry=
    0x7fffffffd7b0, flags=...) at kernel/qeventloop.cpp:149
#19 0x00007ffff2bea5d5 in QEventLoop::exec (this=this@entry=0x7fffffffd7b0, 
    flags=...) at kernel/qeventloop.cpp:204
#20 0x00007ffff2bf0059 in QCoreApplication::exec ()
    at kernel/qcoreapplication.cpp:1227
#21 0x0000000000666c20 in main (argc=1, argv=0x7fffffffe348) at Main.cpp:301

core dump: https://app.box.com/s/k56n2ibnj2xdizgrsryhu5f7zhvnfpq2
Generated with warning: Memory read failed for corefile section, 8192 bytes at 0x7ffff7ffa000

Nice template UI

In the old redmine bug 3092, Christian G. suggested:

I would love if Merkaartor can - like JOSM include more tag templates (right now i added some by myself) and they will be listed in the menu under "Create" - Hospitals, Bus-Stops/Stations, Traffic lights, whatever is tagged on JOSM.

Right now the aminity Tags in a drop down list is a solution for some, but without any kind of knowledge how something should and is tagged it is right hard to create new amenitys / shops and so on ...

Support for multiple tags on changeset.

It was suggested in old redmine bug 3339, by Jonathan Bennett:

The API supports an arbitrary number of tags on changesets, but Merkaartor currently only allows the user to enter a description. Could a tag editor be added to the upload dialog?

Geotagged image support needs major facelift

I was opening an issue about compiling with the GEOIMAGE=1 parameter but I've seen this was fixed with commit e6d015a.

Still there is a "lack of documentation" in the INSTALL file, it doesn't talk of the required parameter GEOIMAGE=1 (and of course the exiv2 development libs) for the geotagged photo support, only the CHANGELOG file mention it.

There is also a warning which could be a potential bug in GeoImageDock.cpp.


Docks/GeoImageDock.cpp: In member function ‘bool GeoImageDock::getWalkingPapersDetails(const QUrl&, double&, double&, bool&) const’:
Docks/GeoImageDock.cpp:84:20: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
if (!sl.size() == 3)
^
Docks/GeoImageDock.cpp:84:20: warning: comparison of constant ‘3’ with boolean expression is always false [-Wbool-compare]

Need more help for building merkaator from surce in Linux.

The Install file needs more information.

It's really hard to build from source, even with the required development libraries.
There are a lot of issues we face and doesn't seems to be any help out there.

some issues:

[1] fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

[2] Reading /home/usr/Desktop/merkaartor-0.18.2/plugins/background/MWalkingPapersBackground/MWalkingPapersBackground.pro
fatal: No names found, cannot describe anything.
fatal: No names found, cannot describe anything.
fatal: No names found, cannot describe anything.
fatal: No names found, cannot describe anything.
fatal: No names found, cannot describe anything.
fatal: No names found, cannot describe anything.

[3] In file included from interfaces/IImageManager.cpp:20:0:
interfaces/IImageManager.h:26:33: fatal error: QNetworkAccessManager: No such file or directory
#include
^
compilation terminated.
make: *** [IImageManager.o] Error 1

[4] In file included from common/MapView.h:4:0,
from Features/Feature.h:8,
from Features/Features.h:2,
from Backend/MemoryBackend.h:4,
from common/Global.h:19,
from common/Global.cpp:13:
common/Projection.h:12:22: fatal error: proj_api.h: No such file or directory
#include <proj_api.h>
^
compilation terminated.
make[1]: *** [Global.o] Error 1

[5] Makefile:843: warning: overriding commands for target moc_MapView.cpp' Makefile:789: warning: ignoring old commands for targetmoc_MapView.cpp'

[6] Project ERROR: Unknown module(s) in QT: webkitwidgets svg

I used some other commands trying to make it properly with no luck:

qmake-qt4 -project
Even some git commands to avoid errors: git init

I'm using the following libraries:
g++ 4.8
qt 4.8.5, qt4-dev-tools, qt4-qtconfig and its dependencies and dependants.
libgeo-proj4-perl 1.05
git 1.9.1
and the other 2 software prerequisites, not exactly the ones that you recommend but they do the job. (I have Installed a previous Merkaartor version and it works great)

No matter what I do, I get lots of errors, And yes, I've followed the instructions, they are pretty easy but doesn't seem to do the job.

I downloaded the package from the merkaartor official website: merkaartor.be
I'm working on Ubuntu 14.04.03.

Almost every Merkaartor required development libraries are a fresh install, and some other libraries too, git by example, so I have nothing set up if required. Why does it need to be bundled as a git project?

Maybe I'm missing something, but I am not used to Qt or git. I could just download a built package, but there are not any latest builds for Ubuntu, I discovered some unofficial plugins for Merkaartor and I need to build Merkaartor for being able to use them.

Fails to build with gpsd 3.15

Merkaartor fails to build with gpsd 3.15 for which the transition in Debian started this weekend:

g++ -c -m64 -pipe -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -I/usr/include/gdal -O2 -Wall -W -Wno-reorder -D_REENTRANT -fPIC -DVERSION=0.18.2 -DREVISION=0.18.2 -DPRODUCT=Merkaartor -DUSE_LIBPROXY -DUSE_WEBKIT -D_TTY_POSIX_ -DUSE_GPS -DUSE_GPSD_LIB -DPLUGINS_DIR=/usr/lib/merkaartor/plugins -DSHARE_DIR=/usr/share/merkaartor -DTRANSDIR_MERKAARTOR=/usr/share/merkaartor/translations -DTRANSDIR_SYSTEM=/usr/share/qt5/translations/ -DGEOIMAGE -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_WEBKITWIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_XML_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB -I. -I../3rdparty/qtsingleapplication-2.6_1-opensource/src -I. -I../include -I../interfaces -Icommon -IBackend -IPaintStyle -IPaintStyle -IFeatures -ILayers -IPreferences -ISync -ICommands -IInteractions -IDocks -IQMapControl -IImportExport -IRender -Iqextserialport -IGPS -ITools -ITagTemplate -INameFinder -IUtils -IQToolBarDialog -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtSvg -isystem /usr/include/x86_64-linux-gnu/qt5/QtWebKitWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtWebKit -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtXml -isystem /usr/include/x86_64-linux-gnu/qt5/QtConcurrent -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -Irelease -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o release/xmlstreamreader.o NameFinder/xmlstreamreader.cpp
GPS/qgpsdevice.cpp: In member function 'virtual void QGPSDDevice::onDataAvailable()':
GPS/qgpsdevice.cpp:1059:27: error: 'struct gps_data_t' has no member named 'PRN'
         int id = gpsdata->PRN[i];
                           ^
GPS/qgpsdevice.cpp:1060:36: error: 'struct gps_data_t' has no member named 'elevation'
         satArray[id][0] = gpsdata->elevation[i];
                                    ^
GPS/qgpsdevice.cpp:1061:36: error: 'struct gps_data_t' has no member named 'azimuth'
         satArray[id][1] = gpsdata->azimuth[i];
                                    ^
GPS/qgpsdevice.cpp:1062:36: error: 'struct gps_data_t' has no member named 'ss'
         satArray[id][2] = gpsdata->ss[i];
                                    ^
Makefile.Release:5149: recipe for target 'release/qgpsdevice.o' failed

Build logs: amd64, all

Merkaartor built successfully with gps 3.11 and earlier when configured with GPSDLIB=1.

qt5: Uploading a changeset doesn't clear the Undo list

After uploading my changes I still have all my changes in the undo list.

If I add new things after uploading, they are just appended to the undo list.

With my added changes I get a notification if I try to close Merkaartor, that I have unsaved changes. This does not happen if only the stuff, that wasn't cleared after uploading, is in the list. So "somehow" Merkaartor knows that the changes in the list are obsolete...

Object tags table cells are not cleared (anymore).

Previous text in cells is not cleared. For example prefilled text
"Edit this to add..." at the end of tags table is not cleared when clicking on the cell.
Also deleting any existing text in the cells (keys or values) leaves the deleted text visible.

This occoured after move from Debian 7 (Squeeze) to Debian 8 (Jessie).
This happens with current master and also using source from early april.
Merkaartor is built with qt4 as previously. Although qt5 exists at least partially on the system too.

Any ideas?

Segfault on moving node

Loaded a saved file, created a node and moved it for 2-3 times.

0x0000000000493f18 in MemoryBackend::purge (this=0xa8e5a0 <g_backend>)
at Backend/MemoryBackend.cpp:394
394 delete *(it++);

Backtrace:

#0  0x0000000000493f18 in MemoryBackend::purge (this=0xa8e5a0 <g_backend>)
    at Backend/MemoryBackend.cpp:394
#1  0x0000000000493fc9 in MemoryBackend::resumeDeletes (this=0xa8e5a0 <g_backend>)
    at Backend/MemoryBackend.cpp:406
#2  0x00000000004ff53d in RenderTile::operator() (this=0x2776098, theTile=...)
    at Layers/OsmRenderLayer.cpp:109
#3  0x00000000005018d1 in QtConcurrent::MapKernel<QList<QPoint>::iterator, RenderTile>::runIteration (this=0x2776060, it=...)
    at /usr/include/qt4/QtCore/qtconcurrentmapkernel.h:73
#4  0x0000000000501955 in QtConcurrent::MapKernel<QList<QPoint>::iterator, RenderTile>::runIterations (this=0x2776060, sequenceBeginIterator=..., beginIndex=28, 
    endIndex=29) at /usr/include/qt4/QtCore/qtconcurrentmapkernel.h:82
#5  0x0000000000501de9 in QtConcurrent::IterateKernel<QList<QPoint>::iterator, void>::forThreadFunction (this=0x2776060)
    at /usr/include/qt4/QtCore/qtconcurrentiteratekernel.h:263
#6  0x0000000000501ad6 in QtConcurrent::IterateKernel<QList<QPoint>::iterator, void>::threadFunction (this=0x2776060)
    at /usr/include/qt4/QtCore/qtconcurrentiteratekernel.h:225
#7  0x00007ffff2ac6bed in QtConcurrent::ThreadEngineBase::run (this=0x27760a0)
    at concurrent/qtconcurrentthreadengine.cpp:264
#8  0x00007ffff2ac8be0 in QThreadPoolThread::run (this=0x7fffbc00b430)
    at concurrent/qthreadpool.cpp:108
#9  0x00007ffff2ad586f in QThreadPrivate::start (arg=0x7fffbc00b430)
    at thread/qthread_unix.cpp:352
#10 0x00007ffff28440a4 in start_thread (arg=0x7fffc0933700) at pthread_create.c:309
#11 0x00007ffff1d5607d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

core: https://app.box.com/s/x615xhpck6eeshebeawm4z8oxiab775n
savefile before creating that node: https://app.box.com/s/uo6fd98f3xgdqaz6x65ihjh4lfw8jlz0

node location:
image

Segfault in rendering: use-after-free QImage

When images are drawn (mostly icons), some QImage is used after beeing freed. This can be easily reproduced by rapid zoom in&out (don't let it redraw!) with address sanitizer turned on.

=================================================================
==25236==ERROR: AddressSanitizer: heap-use-after-free on address 0x7f79c1ae7824 at pc 0x7f79e9eaed9a bp 0x7f79cc21d520 sp 0x7f79cc21ccc8
READ of size 708 at 0x7f79c1ae7824 thread T10 (Thread (pooled))
    #0 0x7f79e9eaed99 (/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/libasan.so.1+0x2fd99)
    #1 0x7f79e5cf1f59 (/usr/lib64/libQt5Gui.so.5+0x2f8f59)
    #2 0x7f79e5d33cb4 (/usr/lib64/libQt5Gui.so.5+0x33acb4)
    #3 0x7f79e5d382c6 in QRasterPaintEngine::drawImage(QPointF const&, QImage const&) (/usr/lib64/libQt5Gui.so.5+0x33f2c6)
    #4 0x7f79e5d598ad in QPainter::drawImage(QPointF const&, QImage const&) (/usr/lib64/libQt5Gui.so.5+0x3608ad)
    #5 0x509ec3 in QPainter::drawImage(int, int, QImage const&, int, int, int, int, QFlags<Qt::ImageConversionFlag>) /usr/include/qt5/QtGui/qpainter.h:851
    #6 0x7818fa in FeaturePainter::drawTouchup(Node*, QPainter*, MapRenderer*) const PaintStyle/FeaturePainter.cpp:468
    #7 0x788fb7 in TouchupStyleLayer::draw(Node*) Render/MapRenderer.cpp:159
    #8 0x78c068 in MapRenderer::render(QPainter*, QMap<RenderPriority, QSet<Feature*> > const&, QRectF const&, QRect const&, double, RendererOptions const&) Render/MapRenderer.cpp:499
    #9 0x5bce1c in RenderTile::operator()(QPoint const&) Layers/OsmRenderLayer.cpp:94
    #10 0x5c2590 in QtConcurrent::MapKernel<QList<QPoint>::iterator, RenderTile>::runIteration(QList<QPoint>::iterator, int, void*) /usr/include/qt5/QtConcurrent/qtconcurrentmapkernel.h:63
    #11 0x5c2709 in QtConcurrent::MapKernel<QList<QPoint>::iterator, RenderTile>::runIterations(QList<QPoint>::iterator, int, int, void*) /usr/include/qt5/QtConcurrent/qtconcurrentmapkernel.h:72
    #12 0x5c31ac in QtConcurrent::IterateKernel<QList<QPoint>::iterator, void>::forThreadFunction() /usr/include/qt5/QtConcurrent/qtconcurrentiteratekernel.h:224
    #13 0x5c2b6f in QtConcurrent::IterateKernel<QList<QPoint>::iterator, void>::threadFunction() /usr/include/qt5/QtConcurrent/qtconcurrentiteratekernel.h:186
    #14 0x7f79eadeb7b4 in QtConcurrent::ThreadEngineBase::run() (/usr/lib64/libQt5Concurrent.so.5+0x27b4)
    #15 0x7f79e5462bd1 (/usr/lib64/libQt5Core.so.5+0xa0bd1)
    #16 0x7f79e5465c1e (/usr/lib64/libQt5Core.so.5+0xa3c1e)
    #17 0x7f79e4fb1363 (/lib64/libpthread.so.0+0x7363)
    #18 0x7f79e44ce37c in __clone (/lib64/libc.so.6+0xe837c)

0x7f79c1ae7824 is located 12324 bytes inside of 224676-byte region [0x7f79c1ae4800,0x7f79c1b1b5a4)
freed by thread T3 (Thread (pooled)) here:
    #0 0x7f79e9ed654f in __interceptor_free (/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/libasan.so.1+0x5754f)
    #1 0x7f79e5b2bb64 in QImageData::~QImageData() (/usr/lib64/libQt5Gui.so.5+0x132b64)

previously allocated by thread T10 (Thread (pooled)) here:
    #0 0x7f79e9ed67c7 in malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/libasan.so.1+0x577c7)
    #1 0x7f79e5b2bfb6 in QImageData::create(QSize const&, QImage::Format, int) (/usr/lib64/libQt5Gui.so.5+0x132fb6)

Thread T10 (Thread (pooled)) created by T3 (Thread (pooled)) here:
    #0 0x7f79e9ea2dba in pthread_create (/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/libasan.so.1+0x23dba)
    #1 0x7f79e54651ff in QThread::start(QThread::Priority) (/usr/lib64/libQt5Core.so.5+0xa31ff)

Thread T3 (Thread (pooled)) created by T0 here:
    #0 0x7f79e9ea2dba in pthread_create (/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/libasan.so.1+0x23dba)
    #1 0x7f79e54651ff in QThread::start(QThread::Priority) (/usr/lib64/libQt5Core.so.5+0xa31ff)

SUMMARY: AddressSanitizer: heap-use-after-free ??:0 ??
Shadow bytes around the buggy address:
  0x0fefb8354eb0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fefb8354ec0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fefb8354ed0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fefb8354ee0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fefb8354ef0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0fefb8354f00: fd fd fd fd[fd]fd fd fd fd fd fd fd fd fd fd fd
  0x0fefb8354f10: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fefb8354f20: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fefb8354f30: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fefb8354f40: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0fefb8354f50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Contiguous container OOB:fc
  ASan internal:           fe
==25236==ABORTING

Silent loss of exising tag, when new one with the same name is entered

In the old redmine bug 3264, Edward Avis reported (still relevant in current master):

Merkaartor 0.17.2 silently discards an existing tag when you enter a new one with the same key. To reproduce:

  • Create a new point on the map.
  • Enter tag a=a.
  • Now enter another tag a=b on the same point. Both are shown in the properties box.
  • Press Escape a few times to clear the selection.
  • Click back on the point and see that only a=b has been kept. There was no warning or notification.

I've realized that for years now I have been tagging POIs as amenity=bar;amenity=restaurant (for example) or adding multiple alt_name tags. Has Merkaartor been discarding all but the last entry without warning?

I don't suggest that the OSM data model should change, but that Merkaartor should not just discard the data entered but prompt the user what to do.

Add back moving of virtual nodes and try to find the bug that crashes it.

commit: 5d60839 removed the ability to move virtual nodes.

This feature is needed to easily create new nodes in an existing way and simultaneously move them to their new position.

I have been able to segfault merkaartor by moving ordinary nodes, just much more rarely than by moving virtual nodes. So the underlaying bug might still be present if the same code is used to move ordinary and virtual nodes.

Implement template editor

In the old redmine bug 3088, Christian G. suggested:

I would love to have a Template Editor for Merkaartor, to add more POI and various other points of interest as well as some other OSM Stuff, which can be hardly tagged by Merkaartor, but well with JOSM.

Segfault on ?

I was just moving viewpoint while drawing line. I had already moved the viewpoint several times during drawing that line. No additional clicks were made during moving.

Backtrace:

#0  0x0000040000000005 in ?? ()
#1  0x0000000000493f20 in MemoryBackend::purge (this=0xa8e5a0 <g_backend>)
    at Backend/MemoryBackend.cpp:394
#2  0x0000000000493fc9 in MemoryBackend::resumeDeletes (this=0xa8e5a0 <g_backend>)
    at Backend/MemoryBackend.cpp:406
#3  0x00000000004ff53d in RenderTile::operator() (this=0x36556a8, theTile=...)
    at Layers/OsmRenderLayer.cpp:109
#4  0x00000000005018d1 in QtConcurrent::MapKernel<QList<QPoint>::iterator, RenderTile>::runIteration (this=0x3655670, it=...)
    at /usr/include/qt4/QtCore/qtconcurrentmapkernel.h:73
#5  0x0000000000501955 in QtConcurrent::MapKernel<QList<QPoint>::iterator, RenderTile>::runIterations (this=0x3655670, sequenceBeginIterator=..., beginIndex=28, 
    endIndex=29) at /usr/include/qt4/QtCore/qtconcurrentmapkernel.h:82
#6  0x0000000000501de9 in QtConcurrent::IterateKernel<QList<QPoint>::iterator, void>::forThreadFunction (this=0x3655670)
    at /usr/include/qt4/QtCore/qtconcurrentiteratekernel.h:263
#7  0x0000000000501ad6 in QtConcurrent::IterateKernel<QList<QPoint>::iterator, void>::threadFunction (this=0x3655670)
    at /usr/include/qt4/QtCore/qtconcurrentiteratekernel.h:225
#8  0x00007ffff2ac6bed in QtConcurrent::ThreadEngineBase::run (this=0x36556b0)
    at concurrent/qtconcurrentthreadengine.cpp:264
#9  0x00007ffff2ac8be0 in QThreadPoolThread::run (this=0x7fffbc00b430)
    at concurrent/qthreadpool.cpp:108
#10 0x00007ffff2ad586f in QThreadPrivate::start (arg=0x7fffbc00b430)
    at thread/qthread_unix.cpp:352
#11 0x00007ffff28440a4 in start_thread (arg=0x7fffc0ff9700) at pthread_create.c:309
#12 0x00007ffff1d5607d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

core: https://app.box.com/s/etitabifo6s4q8bszm3clhirxpd3f4vs

Core generated with warning: Memory read failed for corefile section, 8192 bytes at 0x7ffff7ff8000.
Built upon commit e860665

Implement Ctrl+drag to add to selection

It was suggested in old redmine bug 3251, by Jonathan Bennett:

Pressing Control while drag-selecting should add to the current selection. At present it doesn't modify the behaviour of a drag, but does of a click-select.

If it's easy to implement, Control-Shift-drag could subtract from the selection as well.

SYSTEM_QUAZIP doesn't support Qt5

When building Merkaartor with Qt5 and enabling SYSTEM_QUAZIP (e.g. to use libquazip-qt5-dev on Debian/Ubuntu), linking fails because src/src.pro uses -lquazip unconditionally:

 14 isEmpty(SYSTEM_QUAZIP) {
 15   DEFINES += QUAZIP_STATIC
 16   include(../3rdparty/quazip-0.7/quazip.pri)
 17 } else {
 18   LIBS += -lquazip
 19 }

For Qt5 -lquazip-qt5 should be used instead.

Compile fails ("WARNING: Failure to find: .... /usr/lib/qt/bin/rcc: File does not exist 'Utils.qrc'")

I'm trying to compile the "new" Merkaartor version.
At first I got an error that "webkit" is missing, so I installed "qt5-webkit" and now this first error is gone.

If I try to compile now (qmake first, then make) I get the following in an endless loop:

/usr/lib/qt/bin/qmake -o Makefile src.pro
WARNING: Failure to find: Global.cpp
WARNING: Failure to find: Coord.cpp
WARNING: Failure to find: Document.cpp
WARNING: Failure to find: Painting.cpp
WARNING: Failure to find: Projection.cpp
WARNING: Failure to find: FeatureManipulations.cpp
WARNING: Failure to find: MapView.cpp
WARNING: Failure to find: TagModel.cpp
WARNING: Failure to find: GotoDialog.cpp
WARNING: Failure to find: TerraceDialog.cpp
WARNING: Failure to find: MemoryBackend.cpp
WARNING: Failure to find: MasPaintStyle.cpp
WARNING: Failure to find: MapCSSPaintstyle.cpp
WARNING: Failure to find: PrimitivePainter.cpp
WARNING: Failure to find: Painter.cpp
WARNING: Failure to find: PaintStyleEditor.cpp
WARNING: Failure to find: Feature.cpp
WARNING: Failure to find: Relation.cpp
WARNING: Failure to find: Way.cpp
WARNING: Failure to find: Node.cpp
WARNING: Failure to find: TrackSegment.cpp
WARNING: Failure to find: Layer.cpp
WARNING: Failure to find: ImageMapLayer.cpp
WARNING: Failure to find: LayerWidget.cpp
WARNING: Failure to find: MerkaartorPreferences.cpp
WARNING: Failure to find: PreferencesDialog.cpp
WARNING: Failure to find: WMSPreferencesDialog.cpp
WARNING: Failure to find: TMSPreferencesDialog.cpp
WARNING: Failure to find: ProjectionsList.cpp
WARNING: Failure to find: FilterList.cpp
WARNING: Failure to find: WmsServersList.cpp
WARNING: Failure to find: TmsServersList.cpp
WARNING: Failure to find: BookmarksList.cpp
WARNING: Failure to find: FilterPreferencesDialog.cpp
WARNING: Failure to find: ProjPreferencesDialog.cpp
WARNING: Failure to find: DownloadOSM.cpp
WARNING: Failure to find: DirtyListExecutorOSC.cpp
WARNING: Failure to find: DirtyList.cpp
WARNING: Failure to find: Command.cpp
WARNING: Failure to find: DocumentCommands.cpp
WARNING: Failure to find: FeatureCommands.cpp
WARNING: Failure to find: NodeCommands.cpp
WARNING: Failure to find: RelationCommands.cpp
WARNING: Failure to find: WayCommands.cpp
WARNING: Failure to find: TrackSegmentCommands.cpp
WARNING: Failure to find: CreateAreaInteraction.cpp
WARNING: Failure to find: CreateDoubleWayInteraction.cpp
WARNING: Failure to find: CreateNodeInteraction.cpp
WARNING: Failure to find: CreateSingleWayInteraction.cpp
WARNING: Failure to find: CreateRoundaboutInteraction.cpp
WARNING: Failure to find: CreatePolygonInteraction.cpp
WARNING: Failure to find: EditInteraction.cpp
WARNING: Failure to find: Interaction.cpp
WARNING: Failure to find: MoveNodeInteraction.cpp
WARNING: Failure to find: RotateInteraction.cpp
WARNING: Failure to find: ScaleInteraction.cpp
WARNING: Failure to find: ZoomInteraction.cpp
WARNING: Failure to find: ExtrudeInteraction.cpp
WARNING: Failure to find: BuildBridgeInteraction.cpp
WARNING: Failure to find: MDockAncestor.cpp
WARNING: Failure to find: PropertiesDock.cpp
WARNING: Failure to find: InfoDock.cpp
WARNING: Failure to find: LayerDock.cpp
WARNING: Failure to find: DirtyDock.cpp
WARNING: Failure to find: StyleDock.cpp
WARNING: Failure to find: FeaturesDock.cpp
WARNING: Failure to find: IImageManager.cpp
WARNING: Failure to find: imagemanager.cpp
WARNING: Failure to find: mapadapter.cpp
WARNING: Failure to find: mapnetwork.cpp
WARNING: Failure to find: wmsmapadapter.cpp
WARNING: Failure to find: WmscMapAdapter.cpp
WARNING: Failure to find: tilemapadapter.cpp
WARNING: Failure to find: browserimagemanager.cpp
WARNING: Failure to find: ExportOSM.cpp
WARNING: Failure to find: ImportGPX.cpp
WARNING: Failure to find: ImportOSM.cpp
WARNING: Failure to find: ImportNGT.cpp
WARNING: Failure to find: IImportExport.cpp
WARNING: Failure to find: ImportNMEA.cpp
WARNING: Failure to find: ExportGPX.cpp
WARNING: Failure to find: ImportExportKML.cpp
WARNING: Failure to find: ImportExportCSV.cpp
WARNING: Failure to find: ImportCSVDialog.cpp
WARNING: Failure to find: ImportExportGdal.cpp
WARNING: Failure to find: ImportExportOSC.cpp
WARNING: Failure to find: FeaturePainter.cpp
WARNING: Failure to find: MapRenderer.cpp
WARNING: Failure to find: NativeRenderDialog.cpp
WARNING: Failure to find: qextserialbase.cpp
WARNING: Failure to find: qextserialport.cpp
WARNING: Failure to find: posix_qextserialport.cpp
WARNING: Failure to find: qgps.cpp
WARNING: Failure to find: qgpssatellitetracker.cpp
WARNING: Failure to find: qgpsdevice.cpp
WARNING: Failure to find: SatelliteStrengthView.cpp
WARNING: Failure to find: QFatFs.cpp
WARNING: Failure to find: QFat.cpp
WARNING: Failure to find: QFatFile.cpp
WARNING: Failure to find: ZipEngine.cpp
WARNING: Failure to find: ActionsDialog.cpp
WARNING: Failure to find: TagTemplate.cpp
WARNING: Failure to find: xmlstreamreader.cpp
WARNING: Failure to find: httpquery.cpp
WARNING: Failure to find: namefindertablemodel.cpp
WARNING: Failure to find: namefinderwidget.cpp
WARNING: Failure to find: ShortcutOverrideFilter.cpp
WARNING: Failure to find: SlippyMapWidget.cpp
WARNING: Failure to find: EditCompleterDelegate.cpp
WARNING: Failure to find: PictureViewerDialog.cpp
WARNING: Failure to find: PixmapWidget.cpp
WARNING: Failure to find: SelectionDialog.cpp
WARNING: Failure to find: SvgCache.cpp
WARNING: Failure to find: MDiscardableDialog.cpp
WARNING: Failure to find: OsmLink.cpp
WARNING: Failure to find: Utils.cpp
WARNING: Failure to find: TagSelector.cpp
WARNING: Failure to find: TagSelectorWidget.cpp
WARNING: Failure to find: CheckBoxList.cpp
WARNING: Failure to find: ProjectionChooser.cpp
WARNING: Failure to find: Utils.qrc
WARNING: Failure to find: Global.h
WARNING: Failure to find: Coord.h
WARNING: Failure to find: Document.h
WARNING: Failure to find: MapTypedef.h
WARNING: Failure to find: Painting.h
WARNING: Failure to find: Projection.h
WARNING: Failure to find: FeatureManipulations.h
WARNING: Failure to find: MapView.h
WARNING: Failure to find: TagModel.h
WARNING: Failure to find: GotoDialog.h
WARNING: Failure to find: TerraceDialog.h
WARNING: Failure to find: MemoryBackend.h
WARNING: Failure to find: IFeature.h
WARNING: Failure to find: IProjection.h
WARNING: Failure to find: IImageManager.h
WARNING: Failure to find: IMapAdapter.h
WARNING: Failure to find: IRenderer.h
WARNING: Failure to find: IMapAdapterFactory.h
WARNING: Failure to find: IMapWatermark.h
WARNING: Failure to find: IBackend.h
WARNING: Failure to find: ILayer.h
WARNING: Failure to find: IProgressWindow.h
WARNING: Failure to find: IMerkMainWindow.h
WARNING: Failure to find: ../../../interfaces/IDocument.h
WARNING: Failure to find: MasPaintStyle.h
WARNING: Failure to find: MapCSSPaintstyle.h
WARNING: Failure to find: PrimitivePainter.h
WARNING: Failure to find: Painter.h
WARNING: Failure to find: IPaintStyle.h
WARNING: Failure to find: PaintStyleEditor.h
WARNING: Failure to find: Feature.h
WARNING: Failure to find: Relation.h
WARNING: Failure to find: Way.h
WARNING: Failure to find: Node.h
WARNING: Failure to find: TrackSegment.h
WARNING: Failure to find: IFeature.h
WARNING: Failure to find: Layer.h
WARNING: Failure to find: ImageMapLayer.h
WARNING: Failure to find: LayerIterator.h
WARNING: Failure to find: LayerWidget.h
WARNING: Failure to find: LayerPrivate.h
WARNING: Failure to find: MerkaartorPreferences.h
WARNING: Failure to find: PreferencesDialog.h
WARNING: Failure to find: WMSPreferencesDialog.h
WARNING: Failure to find: TMSPreferencesDialog.h
WARNING: Failure to find: ProjectionsList.h
WARNING: Failure to find: FilterList.h
WARNING: Failure to find: WmsServersList.h
WARNING: Failure to find: TmsServersList.h
WARNING: Failure to find: BookmarksList.h
WARNING: Failure to find: FilterPreferencesDialog.h
WARNING: Failure to find: ProjPreferencesDialog.h
WARNING: Failure to find: DownloadOSM.h
WARNING: Failure to find: DirtyListExecutorOSC.h
WARNING: Failure to find: DirtyList.h
WARNING: Failure to find: Command.h
WARNING: Failure to find: DocumentCommands.h
WARNING: Failure to find: FeatureCommands.h
WARNING: Failure to find: RelationCommands.h
WARNING: Failure to find: WayCommands.h
WARNING: Failure to find: TrackSegmentCommands.h
WARNING: Failure to find: NodeCommands.h
WARNING: Failure to find: CreateAreaInteraction.h
WARNING: Failure to find: CreateDoubleWayInteraction.h
WARNING: Failure to find: CreateNodeInteraction.h
WARNING: Failure to find: CreateRoundaboutInteraction.h
WARNING: Failure to find: CreatePolygonInteraction.h
WARNING: Failure to find: CreateSingleWayInteraction.h
WARNING: Failure to find: EditInteraction.h
WARNING: Failure to find: Interaction.h
WARNING: Failure to find: MoveNodeInteraction.h
WARNING: Failure to find: RotateInteraction.h
WARNING: Failure to find: ScaleInteraction.h
WARNING: Failure to find: ZoomInteraction.h
WARNING: Failure to find: ExtrudeInteraction.h
WARNING: Failure to find: BuildBridgeInteraction.h
WARNING: Failure to find: MDockAncestor.h
WARNING: Failure to find: LayerDock.h
WARNING: Failure to find: PropertiesDock.h
WARNING: Failure to find: InfoDock.h
WARNING: Failure to find: StyleDock.h
WARNING: Failure to find: DirtyDock.h
WARNING: Failure to find: FeaturesDock.h
WARNING: Failure to find: imagemanager.h
WARNING: Failure to find: mapadapter.h
WARNING: Failure to find: mapnetwork.h
WARNING: Failure to find: wmsmapadapter.h
WARNING: Failure to find: WmscMapAdapter.h
WARNING: Failure to find: tilemapadapter.h
WARNING: Failure to find: browserimagemanager.h
WARNING: Failure to find: ExportOSM.h
WARNING: Failure to find: ImportGPX.h
WARNING: Failure to find: ImportNGT.h
WARNING: Failure to find: ImportOSM.h
WARNING: Failure to find: ImportNGT.h
WARNING: Failure to find: IImportExport.h
WARNING: Failure to find: ImportNMEA.h
WARNING: Failure to find: ExportGPX.h
WARNING: Failure to find: ImportExportKML.h
WARNING: Failure to find: ImportExportCSV.h
WARNING: Failure to find: ImportCSVDialog.h
WARNING: Failure to find: ImportExportGdal.h
WARNING: Failure to find: ImportExportOSC.h
WARNING: Failure to find: FeaturePainter.h
WARNING: Failure to find: MapRenderer.h
WARNING: Failure to find: NativeRenderDialog.h
WARNING: Failure to find: qextserialbase.h
WARNING: Failure to find: qextserialport.h
WARNING: Failure to find: posix_qextserialport.h
WARNING: Failure to find: qgps.h
WARNING: Failure to find: qgpssatellitetracker.h
WARNING: Failure to find: qgpsdevice.h
WARNING: Failure to find: SatelliteStrengthView.h
WARNING: Failure to find: QFatFs.h
WARNING: Failure to find: QFat.h
WARNING: Failure to find: QFatFile.h
WARNING: Failure to find: ZipEngine.h
WARNING: Failure to find: ActionsDialog.h
WARNING: Failure to find: TagTemplate.h
WARNING: Failure to find: NameFinderResult.h
WARNING: Failure to find: xmlstreamreader.h
WARNING: Failure to find: httpquery.h
WARNING: Failure to find: namefindertablemodel.h
WARNING: Failure to find: namefinderwidget.h
WARNING: Failure to find: LineF.h
WARNING: Failure to find: ShortcutOverrideFilter.h
WARNING: Failure to find: SlippyMapWidget.h
WARNING: Failure to find: EditCompleterDelegate.h
WARNING: Failure to find: PictureViewerDialog.h
WARNING: Failure to find: PixmapWidget.h
WARNING: Failure to find: SelectionDialog.h
WARNING: Failure to find: SvgCache.h
WARNING: Failure to find: MDiscardableDialog.h
WARNING: Failure to find: OsmLink.h
WARNING: Failure to find: Utils.h
WARNING: Failure to find: TagSelector.h
WARNING: Failure to find: TagSelectorWidget.h
WARNING: Failure to find: CheckBoxList.h
WARNING: Failure to find: ProjectionChooser.h
WARNING: Failure to find: AboutDialog.ui
WARNING: Failure to find: DownloadMapDialog.ui
WARNING: Failure to find: UploadMapDialog.ui
WARNING: Failure to find: GotoDialog.ui
WARNING: Failure to find: TerraceDialog.ui
WARNING: Failure to find: MultiProperties.ui
WARNING: Failure to find: PropertiesDialog.ui
WARNING: Failure to find: PaintStyleEditor.ui
WARNING: Failure to find: LayerWidget.ui
WARNING: Failure to find: FilterEditDialog.ui
WARNING: Failure to find: LicenseDisplayDialog.ui
WARNING: Failure to find: PreferencesDialog.ui
WARNING: Failure to find: WMSPreferencesDialog.ui
WARNING: Failure to find: TMSPreferencesDialog.ui
WARNING: Failure to find: FilterPreferencesDialog.ui
WARNING: Failure to find: OsmServerWidget.ui
WARNING: Failure to find: ProjPreferencesDialog.ui
WARNING: Failure to find: SyncListDialog.ui
WARNING: Failure to find: CreateDoubleWayDock.ui
WARNING: Failure to find: CreateRoundaboutDock.ui
WARNING: Failure to find: DirtyDock.ui
WARNING: Failure to find: StyleDock.ui
WARNING: Failure to find: MinimumRelationProperties.ui
WARNING: Failure to find: MinimumTrackPointProperties.ui
WARNING: Failure to find: MinimumRoadProperties.ui
WARNING: Failure to find: FeaturesDock.ui
WARNING: Failure to find: ExportDialog.ui
WARNING: Failure to find: ImportCSVDialog.ui
WARNING: Failure to find: NativeRenderDialog.ui
WARNING: Failure to find: qgpsmainwindowui.ui
WARNING: Failure to find: namefinderwidget.ui
WARNING: Failure to find: PictureViewerDialog.ui
WARNING: Failure to find: SelectionDialog.ui
WARNING: Failure to find: TagSelectorWidget.ui
WARNING: Failure to find: ProjectionChooser.ui
/usr/lib/qt/bin/rcc: File does not exist 'Utils.qrc'

Download dialog causes problems if waiting some time in the dialog

With the latest GIT version (built as seen here: https://aur4.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=merkaartor-git) I have the following problem:

If I open Merkaartor (empty drawing area) and choose to dowload a region, then the dialog starts with "Current view" for some reason. If I now just keep the dialog open for a few seconds, then I have the following:
download1

Without even clicking something, Merkaartor pops up the "Downloading" window and there it hangs until I click "Cancel". If I do so, I get back to the "Download" window and am able to select "From the map below":
download2

If I now click "OK", then I see the "Downloading" window for some seconds:
downloading

But then I don't get back to the Merkaartor main window, but Merkaartor pops up the "Download" dialog, again, wanting me to select which region I want to download. I can repeat this as often as I want. I never get a successful download and I never get back to the Merkaartor main window. If I, at some time, hit "Cancel" in the "Download" dialog, then Merkaartor ends this loop with:
error

The only way to get around this is to be fast enough. If I'm able to switch to "From the map below" and "OK" before this "empty Downloading window" pops up, then Merkaartor downloads just fine without any problems...

Zooming after closing a gps track layer results in a immediate crash.

Download data and gps tracks.

Zooming after closing a gps track layer results in a immediate crash.
Mooving after closing a gps track layer results in a non-immediate crash.

Closing the downloaded data layer and zooming/moving after it causes crash.

This is present in 0.18.0 and current master branch. (debian)
This is something that has worked correctly in the past but I have no idea when it last worked correctly.

qt5: Error message on startup: "Unknown error code LF"

Directly after starting up Merkaartor (qt5 version) I get a popup message with an error.

error_preferences

On console I see the following:

Requesting preferences from OSM server. 

libpng warning: iCCP: too many profiles
libpng warning: iCCP: too many profiles
Received response with code  6 

Garbage in console while using merkaartor

While using merkaartor (0.18.2) I am seeing a lot of garbage in console.
For example, with a simple start and close I can see:

$ merkaartor 

b

 b
p b
Àe




À*
@
 å
 å
0
 ã{



`s
`s

°È{
°»ê
 ²å
















@!Þ


queue full

queue full

queue full

queue full

queue full

queue full

queue full

queue full

queue full

queue full

queue full

queue full
°Àµ


 »·
Bing Zoom:  17
Bing Zoom:  17


p)²
Bing Zoom:  17
PP·
PP·
5¿
Bing Zoom:  17
¶
¶
#Ù
Bing Zoom:  17






0ϸ


ðÄÒ

ÐíÀ
ÐíÀ
ÐíÀ
@   ß
@   ß
 'ß



pCæ



¨â


ðõÒ




 iÀ



 úÆ




ðæã


p]Þ





À7Æ
0ËÞ
0ËÞ
°¥¸
иÜ
иÜ
 k²


P,Â
ÐÝ
ÐÝ

ð9Â
ð9Â
ð<Þ


PSÊ
ЩÝ
ЩÝ
5Ù
`
PñÛ

quazip location is wrong

quazipquazip.h and quazipfile.h (from third party quazip) are included in ZipEngine.h but the locations are wrong.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.