Maison >interface Web >js tutoriel >Utilisation de JavaScript et de Tencent Maps pour implémenter la fonction d'édition de rectangle de carte

Utilisation de JavaScript et de Tencent Maps pour implémenter la fonction d'édition de rectangle de carte

WBOY
WBOYoriginal
2023-11-21 15:03:48914parcourir

Utilisation de JavaScript et de Tencent Maps pour implémenter la fonction dédition de rectangle de carte

Avec le développement de la technologie Internet, les cartes Web sont devenues un outil important pour l'affichage et l'interaction des données. Dans les cartes Web, l'une des fonctions courantes est la modification des rectangles de carte. Les utilisateurs peuvent sélectionner des zones d'intérêt en faisant glisser des rectangles sur la carte. Cet article explique comment utiliser JavaScript et Tencent Maps pour implémenter la fonction d'édition de rectangle de carte et fournit des exemples de code spécifiques.

1. Prérequis

Avant de commencer à écrire du code, nous devons préparer les conditions suivantes :

  1. Un compte de développeur Tencent Maps valide
  2. Introduction de l'API JavaScript Tencent Maps ; installation et configuration.
  3. 2. Créez une carte et ajoutez une barre d'outils

Créez un conteneur dans le fichier HTML pour afficher la carte. Ensuite, écrivez du code JavaScript, créez la carte et ajoutez une barre d'outils.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>地图矩形编辑示例</title>
    <style type="text/css">
        #map-container {
            width: 100%;
            height: 600px;
        }
    </style>
</head>
<body>
    <div id="map-container"></div>
    <script type="text/javascript" src="https://map.qq.com/api/js?v=2.exp&key=YOUR_KEY_HERE"></script>
    <script type="text/javascript">
        var map = new qq.maps.Map(document.getElementById('map-container'), {
            center: new qq.maps.LatLng(39.916527, 116.397128),
            zoom: 10
        });

        //添加矩形工具栏
        var toolBar = new qq.maps.DrawingTools({
            map: map,
            drawingMode: qq.maps.DrawingTool.RECTANGLE,
            rectangleOptions: {
                fillColor: qq.maps.Color.fromHex('#FF6600', 0.4),
                strokeColor: qq.maps.Color.fromHex('#FF6600'),
                strokeWidth: 2
            }
        });
    </script>
</body>
</html>

Explication du code :

Créez d'abord un conteneur de carte pour afficher la carte sur la page ;
  1. Introduisez l'API JavaScript de Tencent Maps ;
  2. Créez une instance de carte et définissez le point central de la carte et le niveau de zoom ; Créez une barre d'outils, spécifiez le mode de dessin comme rectangle et définissez le style du rectangle.
  3. 3. Capturez l'événement de dessin de rectangle
  4. Maintenant, nous avons ajouté avec succès une barre d'outils rectangulaire. Cependant, ce que nous devons faire est de capturer l'événement lorsque l'utilisateur dessine un rectangle et d'afficher les coordonnées de la bordure du rectangle sur la console.
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>地图矩形编辑示例</title>
    <style type="text/css">
        #map-container {
            width: 100%;
            height: 600px;
        }
    </style>
</head>
<body>
    <div id="map-container"></div>
    <script type="text/javascript" src="https://map.qq.com/api/js?v=2.exp&key=YOUR_KEY_HERE"></script>
    <script type="text/javascript">
        var map = new qq.maps.Map(document.getElementById('map-container'), {
            center: new qq.maps.LatLng(39.916527, 116.397128),
            zoom: 10
        });

        //添加矩形工具栏
        var toolBar = new qq.maps.DrawingTools({
            map: map,
            drawingMode: qq.maps.DrawingTool.RECTANGLE,
            rectangleOptions: {
                fillColor: qq.maps.Color.fromHex('#FF6600', 0.4),
                strokeColor: qq.maps.Color.fromHex('#FF6600'),
                strokeWidth: 2
            }
        });

        //捕获矩形绘制事件
        qq.maps.event.addListener(toolBar, 'rectanglecomplete', function(event) {
            var bounds = event.getBounds();
            console.log('矩形边框左上角坐标:' + bounds.getNorthEast().toString() + '
矩形边框右下角坐标:' + bounds.getSouthWest().toString());
        });
    </script>
</body>
</html>

Explication du code :

Nous utilisons la fonction qq.maps.event.addListener() pour capturer l'événement de dessin de rectangle ;

Passez l'objet rectangle terminé à l'écouteur d'événement ; Obtenez les coordonnées de la bordure du rectangle via l'objet rectangle ;
  1. Envoyez les coordonnées de la bordure à la console. qq.maps.event.addListener()函数来捕获矩形绘制事件;
  2. 将绘制完成的矩形对象传递给事件监听器;
  3. 通过矩形对象获取矩形的边框坐标;
  4. 将边框坐标输出到控制台上。

四、绘制矩形

最后一个步骤是,在地图上绘制矩形。我们需要创建一个函数,将矩形的边框坐标作为参数传递进去。在该函数中,我们可以使用qq.maps.Polygon

4. Dessinez un rectangle

    La dernière étape consiste à dessiner un rectangle sur la carte. Nous devons créer une fonction qui transmet les coordonnées du cadre englobant du rectangle en tant que paramètre. Dans cette fonction, nous pouvons utiliser la classe qq.maps.Polygon pour créer un polygone et l'ajouter à la carte.
  1. <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>地图矩形编辑示例</title>
        <style type="text/css">
            #map-container {
                width: 100%;
                height: 600px;
            }
        </style>
    </head>
    <body>
        <div id="map-container"></div>
        <script type="text/javascript" src="https://map.qq.com/api/js?v=2.exp&key=YOUR_KEY_HERE"></script>
        <script type="text/javascript">
            var map = new qq.maps.Map(document.getElementById('map-container'), {
                center: new qq.maps.LatLng(39.916527, 116.397128),
                zoom: 10
            });
    
            var polygons = [];
    
            //添加矩形工具栏
            var toolBar = new qq.maps.DrawingTools({
                map: map,
                drawingMode: qq.maps.DrawingTool.RECTANGLE,
                rectangleOptions: {
                    fillColor: qq.maps.Color.fromHex('#FF6600', 0.4),
                    strokeColor: qq.maps.Color.fromHex('#FF6600'),
                    strokeWidth: 2
                }
            });
    
            //捕获矩形绘制事件
            qq.maps.event.addListener(toolBar, 'rectanglecomplete', function(event) {
                var bounds = event.getBounds();
    
                //绘制矩形
                var polygon = new qq.maps.Polygon({
                    map: map,
                    path: [
                        new qq.maps.LatLng(bounds.getNorthEast().getLat(), bounds.getSouthWest().getLng()),
                        new qq.maps.LatLng(bounds.getNorthEast().getLat(), bounds.getNorthEast().getLng()),
                        new qq.maps.LatLng(bounds.getSouthWest().getLat(), bounds.getNorthEast().getLng()),
                        new qq.maps.LatLng(bounds.getSouthWest().getLat(), bounds.getSouthWest().getLng())
                    ],
                    fillColor: qq.maps.Color.fromHex('#FF6600', 0.4),
                    strokeColor: qq.maps.Color.fromHex('#FF6600'),
                    strokeWidth: 2
                });
    
                polygons.push(polygon);
            });
        </script>
    </body>
    </html>
  2. Explication du code :
  3. Nous créons plusieurs polygones sur la carte, nous avons donc besoin d'un tableau pour stocker ces objets polygones ;
Dans la fonction de rappel qui capture l'événement de dessin de rectangle, nous utilisons la classe polygone pour créer un polygone ; object ;

Nous créons un objet polygone en utilisant les coordonnées limites du rectangle, l'ajoutons à la carte et le stockons dans un tableau de polygones. 🎜🎜🎜Jusqu'à présent, nous avons implémenté avec succès la fonction d'édition de rectangle de carte. Les utilisateurs peuvent sélectionner la zone d'intérêt en faisant glisser le rectangle sur la carte et en dessinant le rectangle sur la carte. Pour des exemples de code spécifiques, veuillez consulter l'exemple complet ci-dessous : 🎜
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>地图矩形编辑示例</title>
    <style type="text/css">
        #map-container {
            width: 100%;
            height: 600px;
        }
    </style>
</head>
<body>
    <div id="map-container"></div>

    <script type="text/javascript" src="https://map.qq.com/api/js?v=2.exp&key=YOUR_KEY_HERE"></script>
    <script type="text/javascript">
        var map = new qq.maps.Map(document.getElementById('map-container'), {
            center: new qq.maps.LatLng(39.916527, 116.397128),
            zoom: 10
        });

        var polygons = [];

        //添加矩形工具栏
        var toolBar = new qq.maps.DrawingTools({
            map: map,
            drawingMode: qq.maps.DrawingTool.RECTANGLE,
            rectangleOptions: {
                fillColor: qq.maps.Color.fromHex('#FF6600', 0.4),
                strokeColor: qq.maps.Color.fromHex('#FF6600'),
                strokeWidth: 2
            }
        });

        //捕获矩形绘制事件
        qq.maps.event.addListener(toolBar, 'rectanglecomplete', function(event) {
            var bounds = event.getBounds();

            //绘制矩形
            var polygon = new qq.maps.Polygon({
                map: map,
                path: [
                    new qq.maps.LatLng(bounds.getNorthEast().getLat(), bounds.getSouthWest().getLng()),
                    new qq.maps.LatLng(bounds.getNorthEast().getLat(), bounds.getNorthEast().getLng()),
                    new qq.maps.LatLng(bounds.getSouthWest().getLat(), bounds.getNorthEast().getLng()),
                    new qq.maps.LatLng(bounds.getSouthWest().getLat(), bounds.getSouthWest().getLng())
                ],
                fillColor: qq.maps.Color.fromHex('#FF6600', 0.4),
                strokeColor: qq.maps.Color.fromHex('#FF6600'),
                strokeWidth: 2
            });

            polygons.push(polygon);
        });
    </script>
</body>
</html>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn