Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Classes principales  ·  Annotées  ·  Classes groupées  ·  Modules  ·  Fonctions  · 

MapComponent.qml Example File

declarative/places/content/places/MapComponent.qml
 /****************************************************************************
 **
 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
 ** Contact: http://www.qt-project.org/
 **
 ** This file is part of the examples of the Qt Toolkit.
 **
 ** $QT_BEGIN_LICENSE:BSD$
 ** You may use this file under the terms of the BSD license as follows:
 **
 ** "Redistribution and use in source and binary forms, with or without
 ** modification, are permitted provided that the following conditions are
 ** met:
 **   * Redistributions of source code must retain the above copyright
 **     notice, this list of conditions and the following disclaimer.
 **   * Redistributions in binary form must reproduce the above copyright
 **     notice, this list of conditions and the following disclaimer in
 **     the documentation and/or other materials provided with the
 **     distribution.
 **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
 **     the names of its contributors may be used to endorse or promote
 **     products derived from this software without specific prior written
 **     permission.
 **
 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
 **
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/

 import QtQuick 2.0
 import QtLocation 5.0
 import QtLocation.examples 5.0

 Map {
     id: map
     zoomLevel: (maximumZoomLevel - minimumZoomLevel)/2
     center: brisbaneCoordinate

     pinch.activeGestures: MapPinchArea.ZoomGesture
     pinch.enabled: true

     // Flicking
     flick.enabled: true
     flick.deceleration: 3000
     signal mapPressed() // replace with
                         // signal mousePressed(MouseEvent mouse) when QTBUG-14550 is fixed

     property bool followme: false
     property variant scaleLengths: [5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000, 2000000]

     Coordinate {
         id: brisbaneCoordinate
         latitude: -27.5
         longitude: 153
     }

     PositionSource{
         id: positionSource
         active: followme

         onPositionChanged: {
             map.center = positionSource.position.coordinate
         }
     }

     Slider {
         id: zoomSlider;
         minimum: map.minimumZoomLevel;
         maximum: map.maximumZoomLevel;
         opacity: 1
         visible: parent.visible
         z: map.z+1
         anchors {
             bottom: parent.bottom;
             bottomMargin: 56; rightMargin: 10; leftMargin: 10
             left: parent.left
         }
         width: parent.width - anchors.rightMargin - anchors.leftMargin
         value: map.zoomLevel
         onReleasedChanged: {
             if (released == true){
                 map.cameraStopped()
                 released = false
             }
         }
         onValueChanged: {
             map.zoomLevel = value
         }
     }

     signal coordinatesCaptured(double latitude, double longitude)

     Item {//scale
         id: scale
         parent: zoomSlider.parent
         visible: scaleText.text != "0 m"
         z: map.z
         opacity: 0.6
         anchors {
             bottom: zoomSlider.top;
             bottomMargin: 8;
             leftMargin: 20
             left: zoomSlider.left
         }
         Image {
             id: scaleImageLeft
             source: "../../resources/scale_end.png"
             anchors.bottom: parent.bottom
             anchors.left: parent.left
         }
         Image {
             id: scaleImage
             source: "../../resources/scale.png"
             anchors.bottom: parent.bottom
             anchors.left: scaleImageLeft.right
         }
         Image {
             id: scaleImageRight
             source: "../../resources/scale_end.png"
             anchors.bottom: parent.bottom
             anchors.left: scaleImage.right
         }
         Text {
             id: scaleText
             color: "#004EAE"
             horizontalAlignment: Text.AlignHCenter
             anchors.bottom: parent.bottom
             anchors.left: parent.left
             anchors.bottomMargin: 3
             text: "0 m"
             font.pixelSize: 14
         }
         Component.onCompleted: {
             map.calculateScale();
         }
     }

     Timer {
         id: scaleTimer
         interval: 100
         running: false
         repeat: false
         onTriggered: {
             map.calculateScale()
         }
     }

     onCenterChanged:{
         scaleTimer.restart()
         if (map.followme)
             if (map.center != positionSource.position.coordinate) map.followme = false
     }

     onZoomLevelChanged:{
         scaleTimer.restart()
         if (map.followme) map.center = positionSource.position.coordinate
     }

     onWidthChanged:{
         scaleTimer.restart()
     }

     onHeightChanged:{
         scaleTimer.restart()
     }

     Keys.onPressed: {
         if ((event.key == Qt.Key_Plus) || (event.key == Qt.Key_VolumeUp)) {
             map.zoomLevel += 1
         } else if ((event.key == Qt.Key_Minus) || (event.key == Qt.Key_VolumeDown)){
             map.zoomLevel -= 1
         }
     }

     function calculateScale(){
         var coord1, coord2, dist, text, f
         f = 0
         coord1 = map.toCoordinate(Qt.point(0,scale.y))
         coord2 = map.toCoordinate(Qt.point(0+scaleImage.sourceSize.width,scale.y))
         dist = Math.round(coord1.distanceTo(coord2))

         if (dist === 0) {
             // not visible
         } else {
             for (var i = 0; i < scaleLengths.length-1; i++) {
                 if (dist < (scaleLengths[i] + scaleLengths[i+1]) / 2 ) {
                     f = scaleLengths[i] / dist
                     dist = scaleLengths[i]
                     break;
                 }
             }
             if (f === 0) {
                 f = dist / scaleLengths[i]
                 dist = scaleLengths[i]
             }
         }

         text = formatDistance(dist)
         scaleImage.width = (scaleImage.sourceSize.width * f) - 2 * scaleImageLeft.sourceSize.width
         scaleText.text = text
     }

     function roundNumber(number, digits) {
         var multiple = Math.pow(10, digits);
         return Math.round(number * multiple) / multiple;
     }

     function formatTime(sec){
         var value = sec
         var seconds = value % 60
         value /= 60
         value = (value > 1) ? Math.round(value) : 0
         var minutes = value % 60
         value /= 60
         value = (value > 1) ? Math.round(value) : 0
         var hours = value
         if (hours > 0) value = hours + "h:"+ minutes + "m"
         else value = minutes + "min"
         return value
     }

     function formatDistance(meters)
     {
          var dist = Math.round(meters)
          if (dist > 1000 ){
              if (dist > 100000){
                  dist = Math.round(dist / 1000)
              }
              else{
                  dist = Math.round(dist / 100)
                  dist = dist / 10
              }
              dist = dist + " km"
          }
          else{
              dist = dist + " m"
          }
          return dist
     }
 }
Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 5.0-snapshot
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web