рдпрд╣ рдкреЛрд╕реНрдЯ "рд╕реНрдорд╛рд░реНрдЯ рдлреЛрди рдлреЙрд░ рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯ" рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд░рд╣реА рд╣реИредрдЖрдЗрдП рдирд┐рдореНрди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ: рдЖрд╡реЗрджрди рдореЗрдВ рдкрд┐рди рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдб рджрд┐рдЦрд╛рдПрдВ, рдЕрд░реНрдерд╛рдд, рдХрд┐рд╕реА рднреА рдПрд▓рдмреАрдПрд╕ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдирд╛рдПрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, MVC рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдпрд╛рдиреА, C ++ рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ, рдФрд░ QML рдХреЗрд╡рд▓ UI рд╕реЗ рдЬреБрдбрд╝реЗ рдорд╛рдирдЪрд┐рддреНрд░рдг рдФрд░ рддрд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╣рдо рдирдХреНрд╢реЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдорд╛рдирдЪрд┐рддреНрд░ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЙрд╕реА рд╕рдордп рд╣рдо C ++ рдФрд░ QML рд╕реЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдмрдВрдзрди рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдерд╛рдкрд┐рдд Qt SDK 1.1.4 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ: рдХреНрдпреВрдЯреА рдХреНрд╡рд┐рдХ рдПрдкреНрд▓реАрдХреЗрд╢рди -> рдХреНрдпреВрдИ рдХреНрд╡рд┐рдХ рдХрдореНрдкреЛрдиреЗрдВрдЯреНрд╕ рдлреЙрд░ рдореАрдЧреЛ / рд╣рд░рдорд╛рдЯрди, рдлрд┐рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫред рдЪреВрдБрдХрд┐ рд╣рдо Qt рдореЛрдмрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдореЗрдВ рдкреНрд░реЛ рдлрд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
CONFIG += mobility
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ C ++ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдФрд░ рджреЛ qml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ - main.qml рдФрд░ MainPage.qmlред рд╣рдо рдореЗрди рдХреЛ рдирд╣реАрдВ рдЫреВрдПрдВрдЧреЗ, рдЗрд╕рдореЗрдВ рдКрдкрд░реА рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдФрд░ рдирд┐рдЪрд▓рд╛ рдореЗрдиреВ рд╣реИ рдЬреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╣реИред рдЖрдкрдХреЛ MainPage рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
import QtMobility.location 1.2
рдФрд░ рдкреГрд╖реНрда рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрдВ, рдЗрд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
Map { id: map anchors.fill:parent plugin: Plugin {name:"nokia"} zoomLevel: 13 center: Coordinate { latitude: 55.755786; longitude: 37.617633 } }
рдореИрдВ рдкреНрд▓рдЧрд┐рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛ - рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдирдХреНрд╢реЗ рдореЗрдВ рдиреЛрдХрд┐рдпрд╛ (рдУрд╡реА) рдореИрдкреНрд╕ рд╕реЗ рдЯрд╛рдЗрд▓реНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдиреБрдорд╛рдирд┐рдд рд╕реНрддрд░ рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдорд╛рд╕реНрдХреЛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред
рд╕рдм рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЙрдВрдЧрд▓реА рд╕реНрдХреНрд░реЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореВрд▓ рдирд┐рдпрдВрддреНрд░рдг рдпрд╣ рдХрд░рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░рддреЗ рд╣реИрдВред рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ MouseArea рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдПрдХрд▓ рддрд╛рдЪреА рдХреЛ рдкрдХрдбрд╝реЗрдЧрд╛ рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдЧрд╛:
MouseArea { anchors.fill:parent property int lastX : -1 property int lastY : -1 onPressed : { lastX = mouse.x; lastY = mouse.y; } onReleased : { lastX = -1; lastY = -1; } onPositionChanged: { if (lastX>=0) { map.pan(lastX- mouse.x, lastY - mouse.y) lastX = mouse.x lastY = mouse.y } } }
PinchArea рдПрд▓рд┐рдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреВ-рдлрд┐рдВрдЧрд░ рдЬреВрдо рдХреЛ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдкрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдм рдЖрдкрдХреЛ рдкрд┐рди рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорд╛рдирдЪрд┐рддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЧреНрд░рд╛рдлрд┐рдХ рд░реВрдк рд╕реЗ рдЖрджрд┐рдо рдФрд░ рдмрд┐рдЯрдореИрдк рджреЛрдиреЛрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдпрд╣ addMapObject рдФрд░ removeMapObject рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ MVC рдХрд░рдиреЗ рдХреА рд╣рдорд╛рд░реА рдЗрдЪреНрдЫрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк MapObjectView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╣рддрд╛ рд╣реИ "рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ LandmarkModel рд╕рдорд░реНрдерд┐рдд рд╣реИред рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред тАЭрдФрд░ рд▓реИрдВрдбрдорд╛рд░реНрдХрдореЙрдбрд▓ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдВрдзреЗрд░рд╛ рдЬрдВрдЧрд▓ рд╣реИред рд╣рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓ рдЪрд╛рд╣рд┐рдПред рддреЛ рд╣рдо рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╣рдо C ++ рдореЗрдВ рдореЙрдбрд▓ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред
рдореЙрдбрд▓ рд╕рд░рд▓ рд╣реЛрдЧрд╛: рдЕрдВрджрд░ рдкрд┐рдВрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА, рдкрд┐рди рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЯ, рд▓реИрдВрдЧ рдФрд░ рдЗрдореЗрдЬ рд╕реЛрд░реНрд╕ред рд▓реЗрдХрд┐рди рджреГрд╢реНрдп рдореЗрдВ, рд╣рдо рдЕрдм рд▓реИрдЯ рдФрд░ рд▓реИрдВрдЧ рдирд╣реАрдВ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдкрд┐рди рдХреЗ рдкреВрд░реНрдг рдореВрд▓реНрдпред рд╣рдо рдРрдбрдкрд┐рди рд╡рд┐рдзрд┐ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕реВрдЪреА рдореЗрдВ рдкрд┐рди рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдФрд░ рдбреНрд░реЙрдкрд┐рдиреНрд╕ рдЬрд┐рд╕реЗ рджреЗрдЦрдиреЗ рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдореВрд▓реНрдпреЛрдВ рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдбреНрд░реЙрдкрд┐рди рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрд▓реЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рджреГрд╢реНрдп рд╕реЗ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред
class PinList : public QAbstractListModel
рдЕрдм рд╣рдореЗрдВ рдпрд╣ рд╕рдм рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкрд┐рди рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
рдФрд░ рдирдХреНрд╢реЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВ
Item { anchors.fill:parent Repeater { model: pinlist delegate: landmarkMapDelegate } }
рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдореЙрдбрд▓ рдкрд┐рдирд▓рд┐рд╕реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реЗ рдмрдВрдзрд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдлрд┐рд░ C ++ рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдбреНрд░реЙрдкрд┐рдиреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ, рдЬреЛ рдореИрдк рдХреЗ рд▓реЗрдЯ рдФрд░ рд▓реИрдВрдЧ рдХреЙрд░реНрдирд░ рдХреЛ рдкрдврд╝реЗрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдореЙрдбрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдЧрд╛
function drawPins() { var topLeft = map.toCoordinate(Qt.point(0,0)) var bottomRight = map.toCoordinate(Qt.point(map.width, map.height)) pinlist.DrawPins(topLeft.latitude,topLeft.longitude,bottomRight.latitude,bottomRight.longitude, map.width,map.height); }
рдФрд░ рдЗрд╕реЗ OnPositionChanges рдореИрдк рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдВред
рдЕрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:
// PinList* pinList = new PinList(0); // pinList->addPin("qrc:/icons/pin.png", 55.745, 37.6175); pinList->addPin("qrc:/icons/pin.png", 55.7575, 37.619697); pinList->addPin("qrc:/icons/pin.png", 55.751667, 37.617778); // viewer->rootContext()->setContextProperty("pinlist", pinList); // qml viewer->setMainQmlFile(QLatin1String("qml/untitled/main.qml"));
рд╡рд╣ рд╕рдм рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб