Прочитав документацию вот тут:
http://doc.qt.io/qt-5/qml-coordinate.html
Написал такой код:
Item {
id: root
property double geoTransportLatitude: 0
property double geoTransportLongitude: 0
...
Location {
id: location
coordinate {
latitude: root.geoTransportLatitude
longitude: root.geoTransportLongitude
}
}
Binding
{
target: map
property: "center"
value: location.coordinate
when: location.coordinate.isValid
}
И он работает. А потом думаю: стоп, чего это он работает? В биндинге идет обращение к полю coordinate элемента location. А значение поля coordinate в элементе location не задано! Есть какой-то странный вложенный элемент с типом coordinate (почему-то с маленькой буквы), но он же не задает _значение_поля_ coordinate.
Взял, и поставил двоеточие после coordinate в элементе location, вот так:
coordinate: {
latitude: root.geoTransportLatitude
longitude: root.geoTransportLongitude
}
И получил ошибку:
MapArea.qml:90:21: Unable to assign double to QGeoCoordinate
Теперь сижу и думаю: что эта запись БЕЗ двоеточия означает? Почему при описании свойства coordinate двоеточие ставить не нужно? Каким волшебным образом вложенный элемент преобразуется в значение поля?