QtMobility.location рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдФрд░ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдкрд░рд┐рдЪрдп

рдпрд╣ рдкреЛрд╕реНрдЯ " рд╕реНрдорд╛рд░реНрдЯ рдлреЛрди рдлреЙрд░ рд╕реНрдорд╛рд░реНрдЯ рдкреЛрд╕реНрдЯ " рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреА рд╣реИ

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рднреА рдХрд╛рд░реНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдФрд░ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рд╡рд┐рд╖рдп рдкреЗрд╢реЗрд╡рд░ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирд╡ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ QtQuick рд╡рд┐рд╖рдп рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдХрд░ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдЙрд╕рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рд╛рджрдЧреА рд╕реЗ рдореБрдЭреЗ рд╕реБрдЦрдж рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд┐рдпрд╛ред


рдпрд╣ QtMobility.location рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рд╡реИрд╕реЗ, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреНрдпреВрдПрдордПрд▓ рдХреЛрдб рдХреЗ рдПрдХ рдкреГрд╖реНрда рд╕реЗ рдХрдо рдФрд░ рд╕реА ++ рдореЗрдВ рдПрдХ рднреА рд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИред




рд╕рдВрднрд╡рддрдГ, рдпрд╣ рдиреНрдпреВрдирддрдо "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб !!!" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдкрд░рдВрдкрд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд▓рд╛рдпрдХ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб !!!" рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИред рдпрд╣ рдЕрдм рдПрдХ рдЕрдВрдзреЗрд░реЗ, рдЕрдорд┐рддреНрд░ рд╕рд╛рдВрддреНрд╡рдирд╛ рдореЗрдВ рдПрдХ рдирдИ рдЯреЛрдкреАрджрд╛рд░ рд▓рдбрд╝рдХреА рдХреА рдЪреАрдЦрд╝ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдкрдбрд╝реЛрд╕реА рдпрд╛рд░реНрдб рдореЗрдВ рдЙрдбрд╝рд╛рди рднрд░рддреЗ рд╕рдордп рдЙрд╕рдХрд╛ рдереЛрдбрд╝рд╛ рд╡рд┐рдЬрдпреА рд░реЛрдирд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛):
  1. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  2. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  3. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  4. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  5. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  6. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  7. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  8. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  9. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  10. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  11. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  12. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  13. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  14. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  15. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  16. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  17. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  18. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  19. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  20. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  21. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  22. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  23. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  24. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  25. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  26. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page
  27. import QtQuick 1.1 import QtMobility.location 1.2 Item { id: page anchors.fill: parent focus: true TitleBar { id: titleBar; appname: "Hello World" ; z: 5; width: parent.width; height: 40; opacity: 0.8 } Rectangle { id: dataArea anchors.top: titleBar.bottom anchors.bottom: parent.bottom width: parent.width color: "#343434" Map { id: map plugin: Plugin { name : "nokia" } anchors.fill: parent size.width: parent.width size.height: parent.height zoomLevel: 6 center: Coordinate {latitude: 55; longitude: 73.12} mapType: Map.StreetMap } // map } } // page

рдореБрдЦреНрдп рддрддреНрд╡ рдЬреЛ рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдирдХреНрд╢рд╛ рддрддреНрд╡ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ред рд╡рд╣ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕ рддрддреНрд╡ рдореЗрдВ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдкреНрд▓рдЧрдЗрди рддрддреНрд╡ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреЗрдВрджреНрд░ рдХреА рд╕рдВрдкрддреНрддрд┐ - рдкреНрд░рджрд░реНрд╢рд┐рдд рдирдХреНрд╢реЗ рдХреЗ рдХреЗрдВрджреНрд░ рдХрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред рдирдХреНрд╢реЗ рдкрд░ рдПрдХ рдирдП рд╕реНрдерд╛рди рдкрд░ "рдХреВрдж" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдорд╛рдирдЪрд┐рддреНрд░ рддрддреНрд╡ рдХреЗ рдХреЗрдВрджреНрд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рди рдХреЗрд╡рд▓ рдЕрдЪрд╛рдирдХ, рдмрд▓реНрдХрд┐ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдо рд╕рдХрддреЗ рд╣реИрдВред map.pan (dx, dy) рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред dx, рдбрд╛рдИ - рдмрд╛рдИрдВ / рджрд╛рдИрдВ рд╢рд┐рдлреНрдЯ рдФрд░ рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрдк / рдбрд╛рдЙрдиред

рдЬрд╝реВрдорд▓реЗрд╡рд▓ рдирдХреНрд╢реЗ рдХреЗ рдкреИрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдХрд░, рдЖрдк рдЬрд╝реВрдо рдЗрди / рдЖрдЙрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдорд╛рди рдХреЛ рдиреНрдпреВрдирддрдо ZLvel рдФрд░ рдЕрдзрд┐рдХрддрдоZLLvel рдЧреБрдгреЛрдВ рд╕реЗ рдШрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

mapType рдПрдХ рдореИрдк рдкреНрд░рдХрд╛рд░ рд╣реИред рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
тАв Map.StreetMap
тАв рдорд╛рдирдЪрд┐рддреНрд░
тАв рдореИрдк.рд╕реИрдЯреЗрд╕реНрдЯреЗрд░рд┐рдпрд▓рдиреНрдпреВрдЗрдЯ
тАв Map.TerrainMap
тАв Map.HybridMap
тАв Map.TransitMap
тАв Map.GrayStreetMap
тАв Map.MobileStreetMap
тАв Map.MobileTerrainMap
тАв Map.MobileHybridMap
тАв Map.MobileTransitMap
тАв Map.MobileGrayStreetMap
рд╕рд╣реА рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдб рдХрд╛ рдкреНрд░рдХрд╛рд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, Map.StreetMap рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдиреАрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ - Map.SatelicMapDay :




рдорд╛рдирдЪрд┐рддреНрд░ рддрддреНрд╡ рдХреА рдмрд╛рд▓ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдХреЛ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ MapRectangle, MapCircle, MapText, MapImage, MapPolygon, MapPolyline , рдЖрджрд┐ред рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡реЗ рдирдХреНрд╢реЗ, рдкреНрд░рджрд░реНрд╢рди рдорд╛рд░реНрдЧреЛрдВ, рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдмрд▓ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдирдХреНрд╢реЗ рдкрд░ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  1. MapText {
  2. рдЖрдИрдбреА: рдЧреНрд░рдВрде
  3. рд╕рдордиреНрд╡рдп: рд╕рдордиреНрд╡рдп {рдЕрдХреНрд╖рд╛рдВрд╢: 54.914; рджреЗрд╢рд╛рдВрддрд░: 73.313}
  4. рд░рдВрдЧ: "рдкреАрд▓рд╛"
  5. рдкрд╛рда: "рд╕рдорд░рдХрд╝рд╛"
  6. font.pixelSize: 10
  7. }


рдпрд╛, рдЗрд╕ рддрд░рд╣ - рдПрдХ рдкреАрд▓реЗ рд╡реГрддреНрдд рдХреЗ рд╕рд╛рде рдЖрдк рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  1. MapCircle {
  2. id: userPosition
  3. рд░рдВрдЧ: "рдкреАрд▓рд╛"
  4. рддреНрд░рд┐рдЬреНрдпрд╛: 10
  5. рдХреЗрдВрджреНрд░: userPositionSource.position.coordinate
  6. }


рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ред QtMobility рдХреЗ рд╕рд╛рде, рдпрд╣ рднреА рддрддреНрд╡ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ QML рд╕реНрдерд┐рддрд┐ рд╕реНрд░реЛрдд рддрддреНрд╡ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдКрдВрдЪрд╛рдИ рдФрд░ рдЧрддрд┐ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛрдб рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрддреНрд╡ рд╕реЗ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдирд┐рдХрд▓рдирд╛ рд╣реИ:
  1. рдЖрдпрд╛рдд Qt 4.7
  2. рдЖрдпрд╛рдд QtMobility.location 1.2
  3. рдЖрдпрдд {
  4. рдЖрдИрдбреА: рдкреЗрдЬ
  5. рдЪреМрдбрд╝рд╛рдИ: 350
  6. рдКрдВрдЪрд╛рдИ: 350
  7. рд╕реНрдерд┐рддрд┐ рд╕реНрд░реЛрдд {
  8. рдЖрдИрдбреА: рд╕реНрдерд┐рддрд┐
  9. updateInterval: 1000
  10. рд╕рдХреНрд░рд┐рдп: рд╕рдЪ
  11. // nmeaSource: "nmealog.txt"
  12. }
  13. рдХреЙрд▓рдо {
  14. рдкрд╛рда {рдкрд╛рда: "<==== рдкреЙрдЬрд┐рд╢рди рд╕реЛрд░реНрд╕ ====>" }
  15. рдкрд╛рда {рдкрд╛рда: "рдкреЛрдЬрд┐рд╢рдирдореИрдереЛрдб:" + рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЗрдереЛрдб (рд╕реНрдерд┐рддрд┐рд╕реНрд░реЛрдд.рдкреЛрд╕рд┐рдВрдЧрдореЗрдереЛрдб)}
  16. рдкрд╛рда {рдкрд╛рда: "nmeaSource:" + positionSource.nmeaSource}
  17. рдЯреЗрдХреНрд╕реНрдЯ {рдЯреЗрдХреНрд╕реНрдЯ: "рдЕрдкрдбреЗрдЯрдЗрдВрдЯрд░рд╡рд▓:" + positionSource.updateInterval}
  18. рдкрд╛рда {рдкрд╛рда: "рд╕рдХреНрд░рд┐рдп:" + positionSource.active}
  19. рдкрд╛рда {рдкрд╛рда: "<==== рд╕реНрдерд┐рддрд┐ ====>" }
  20. рдкрд╛рда {рдкрд╛рда: "рдЕрдХреНрд╖рд╛рдВрд╢:" + positionSource.position.coordinate.latitude}
  21. рдкрд╛рда {рдкрд╛рда: "рджреЗрд╢рд╛рдВрддрд░:" + positionSource.position.coordinate.longitude}
  22. рдкрд╛рда {рдкрд╛рда: "рдКрдВрдЪрд╛рдИ:" + positionSource.position.coordinate.altitude}
  23. рдкрд╛рда {рдкрд╛рда: "рдЧрддрд┐:" + positionSource.position.speed}
  24. рдкрд╛рда {рдкрд╛рда: "рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк:" + positionSource.position.timestamp}
  25. рдкрд╛рда {рдкрд╛рда: "рдКрдБрдЪрд╛рдИ рдЕрдорд╛рдиреНрдп:" + positionSource.position.altitudeValid}
  26. рдкрд╛рда {рдкрд╛рда: "рджреЗрд╢рд╛рдВрддрд░ рдЕрдорд╛рдиреНрдп:" + positionSource.position.longitudeValid}
  27. рдкрд╛рда {рдкрд╛рда: "рдЕрдХреНрд╖рд╛рдВрд╢рд╡рд┐рджреНрдпреБрдд:" + positionSource.position.latitudeValid}
  28. рдкрд╛рда {рдкрд╛рда: "рдЧрддрд┐рд╡рд┐рджреНрдпреБрдд:" + positionSource.position.speedValid}
  29. }
  30. рд╕рдорд╛рд░реЛрд╣ рдореБрджреНрд░рдг рдпреЛрдЧреНрдпрдордереЛрдб (рд╡рд┐рдзрд┐) {
  31. рдЕрдЧрд░ (рд╡рд┐рдзрд┐ == рд╕реНрдерд┐рддрд┐рд╕реНрд░реЛрдд.рд╕реИрд╡рд▓рдкрд░реНрд╕рд┐рд╢рдирд┐рдВрдЧрдореИрдереЛрдб)
  32. рд╡рд╛рдкрд╕реА "рд╕реИрдЯреЗрд▓рд╛рдЗрдЯ" ;
  33. рдФрд░ рдпрджрд┐ (рд╡рд┐рдзрд┐ == рд╕реНрдерд┐рддрд┐рд╕реНрд░реЛрддред рдиреЛ рдкреЛрдЬрд┐рд╢рдирд┐рдВрдЧрдореЗрдереЛрдб)
  34. рд╡рд╛рдкрд╕реА "рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ"
  35. рдФрд░ рдЕрдЧрд░ (рд╡рд┐рдзрд┐ == рдкреЙрдЬрд┐рд╢рди рд╕реЛрд░реНрд╕ред рдиреЙрдирд╕реИрдЯрд╡рд░реНрдХрд┐рдВрдЧрдкреЗрд╕рд┐рдВрдЧрдореЗрдереЛрдб)
  36. "рдЧреИрд░-рдЙрдкрдЧреНрд░рд╣" рд▓реМрдЯрд╛рдПрдВ
  37. рдФрд░ рдпрджрд┐ (рд╡рд┐рдзрд┐ == рд╕реНрдерд┐рддрд┐рд╕реНрд░реЛрддред рд╕рднреА рдЬрдорд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореИрдереЛрдб)
  38. рд╡рд╛рдкрд╕реА "рдСрд▓ / рдорд▓реНрдЯреАрдкрд▓"
  39. рд╡рд╛рдкрд╕реА "рд╕реНрд░реЛрдд рддреНрд░реБрдЯрд┐" ;
  40. }
  41. }






рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдореЗрдВ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рдереА рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ - рдХреНрдпреВрдЯреАрдПрдордмрд┐рд▓рд┐рдЯреА рдХреЗ рд╕рд╛рде, рдпрд╣ рднреА рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Map.toCoordinate () рдлрд╝рдВрдХреНрд╢рди рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрдХреНрд░реАрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдЫреБрдЖ - рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд▓рд╛:
  1. рдкреНрд░рднрд╛рд╡рд┐рдд: {
  2. рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ( 'рдЕрдХреНрд╖рд╛рдВрд╢ =' + (рдирдХреНрд╢рд╛.рдСрдЯреЛрдЖрд░реНрдбрд┐рдиреЗрдЯ (Qt.point (mouse.x, mouse.y))); рдЕрдХреНрд╖рд╛рдВрд╢)
  3. рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ( 'рджреЗрд╢рд╛рдВрддрд░ =' + (рдирдХреНрд╢рд╛.рдСрдЯреЛрдЖрд░реНрдбрд┐рдиреЗрдЯ (Qt.point (mouse.x, mouse.y)))ред рджреЗрд╢рд╛рдВрддрд░);
  4. }




рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдУрд╡реАрдЖрдИ рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдХрд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдУрд╡реАрдЖрдИ рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрд╕рдХреЗ рдирд╛рдо рдФрд░ рдХрдИ, рдХрдИ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреА рдЦреЛрдЬ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, "рдП" рдФрд░ "рдмреА" рдЕрдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдУрд╡реАрдЖрдИ рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рддрдХ рдПрдХ рдорд╛рд░реНрдЧ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдирдХреНрд╢реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ - рдХреНрдпреВрдПрдордПрд▓ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджреЛрд╕реНрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреНрдпреВрдПрдордПрд▓ - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ - рдУрд╡реАрдЖрдИ рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ рд╕рдВрдпреЛрдЬрди рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░реНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдФрд░ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдФрд░ QtQuick рдиреЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдЕрдкрдиреА рд╕рд╛рд░реА рд╢рдХреНрддрд┐ рдФрд░ рд╕реБрдВрджрд░ рд╕рд╛рджрдЧреА рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред

OVI рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди:

Source: https://habr.com/ru/post/In133447/


All Articles