Rumah >hujung hadapan web >tutorial js >Menggunakan JavaScript dan Peta Tencent untuk melaksanakan fungsi penyuntingan segi empat tepat peta

Menggunakan JavaScript dan Peta Tencent untuk melaksanakan fungsi penyuntingan segi empat tepat peta

WBOY
WBOYasal
2023-11-21 15:03:48910semak imbas

Menggunakan JavaScript dan Peta Tencent untuk melaksanakan fungsi penyuntingan segi empat tepat peta

Dengan perkembangan teknologi Internet, peta Web telah menjadi alat penting untuk paparan dan interaksi data. Dalam peta Web, salah satu fungsi biasa ialah penyuntingan segi empat tepat peta. Pengguna boleh memilih kawasan yang menarik dengan menyeret segi empat tepat pada peta. Artikel ini akan memperkenalkan cara menggunakan JavaScript dan Peta Tencent untuk melaksanakan fungsi penyuntingan segi empat tepat peta dan memberikan contoh kod khusus.

1. Prasyarat

Sebelum kami mula menulis kod, kami perlu menyediakan syarat-syarat berikut:

  1. Akaun pembangun Tencent Maps yang sah
  2. Pengenalan Tencent Maps JavaScript API
  3. seperti Visual Studio Kod; pemasangan dan konfigurasi.

2. Cipta peta dan tambahkan bar alat

Buat bekas dalam fail HTML untuk memaparkan peta. Kemudian tulis beberapa kod JavaScript, buat peta dan tambahkan bar alat.

<!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>

Penjelasan kod:

  1. Mula-mula buat bekas peta untuk memaparkan peta ke halaman
  2. Perkenalkan API JavaScript Peta Tencent
  3. Buat contoh peta dan tetapkan titik tengah dan tahap zum; Buat bar alat, tentukan mod lukisan sebagai segi empat tepat, dan tetapkan gaya segi empat tepat.
  4. 3 Tangkap acara lukisan segi empat tepat

Kini, kami telah berjaya menambah bar alat segi empat tepat. Walau bagaimanapun, apa yang perlu kita lakukan ialah menangkap peristiwa apabila pengguna melukis segi empat tepat dan mengeluarkan koordinat sempadan segi empat tepat pada konsol.

<!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>

Penjelasan kod:

Kami menggunakan fungsi qq.maps.event.addListener() untuk menangkap acara lukisan segi empat tepat
  1. Lepaskan objek segi empat tepat kepada pendengar acara qq.maps.event.addListener()函数来捕获矩形绘制事件;
  2. 将绘制完成的矩形对象传递给事件监听器;
  3. 通过矩形对象获取矩形的边框坐标;
  4. 将边框坐标输出到控制台上。

四、绘制矩形

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

; Dapatkan koordinat sempadan segi empat tepat melalui objek segi empat tepat;

    4. Lukiskan segi empat tepat
  1. Langkah terakhir ialah melukis segi empat tepat pada peta. Kita perlu mencipta fungsi yang melepasi koordinat kotak sempadan segi empat tepat sebagai parameter. Dalam fungsi ini, kita boleh menggunakan kelas qq.maps.Polygon untuk mencipta poligon dan menambahnya pada peta.
  2. <!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>
  3. Penjelasan kod:
Kami mencipta berbilang poligon pada peta, jadi kami memerlukan tatasusunan untuk menyimpan objek poligon ini

Dalam fungsi panggil balik yang menangkap peristiwa lukisan segi empat tepat, kami menggunakan kelas poligon untuk mencipta poligon; objek; 🎜🎜Kami mencipta objek poligon menggunakan koordinat sempadan segi empat tepat, menambahnya pada peta dan menyimpannya dalam tatasusunan poligon. 🎜🎜🎜Setakat ini, kami telah berjaya melaksanakan fungsi penyuntingan segi empat tepat peta. Pengguna boleh memilih kawasan yang diminati dengan menyeret segi empat tepat pada peta dan melukis segi empat tepat pada peta. Untuk contoh kod khusus, sila lihat contoh lengkap di bawah: 🎜
<!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>

Atas ialah kandungan terperinci Menggunakan JavaScript dan Peta Tencent untuk melaksanakan fungsi penyuntingan segi empat tepat peta. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn