With the development of Internet technology, Web maps have become an important tool for data display and interaction. In Web maps, one of the common functions is map rectangle editing. Users can select areas of interest by dragging rectangles on the map. This article will introduce how to use JavaScript and Tencent Maps to implement the map rectangle editing function, and provide specific code examples.
1. Prerequisites
Before we start writing code, we need to prepare the following conditions:
2. Create a map and add a toolbar
Create a container in the HTML file to display the map. Then write some JavaScript code, create the map, and add a toolbar.
<!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>
Code explanation:
3. Capture the rectangle drawing event
Now, we have successfully added a rectangular toolbar. However, what we need to do is capture the event when the user draws a rectangle and output the rectangle's border coordinates on the 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>
Code explanation:
qq.maps.event.addListener()
function to capture the rectangle drawing event; 4. Draw a rectangle
The last step is to draw a rectangle on the map. We need to create a function that passes the bounding box coordinates of the rectangle as a parameter. In this function, we can use the qq.maps.Polygon
class to create a polygon and add it to the map.
<!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>
Code explanation:
So far, we have successfully implemented the map rectangle editing function. Users can select the area of interest by dragging the rectangle on the map and draw the rectangle on the map. For specific code examples, please see the complete example below:
<!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>
The above is the detailed content of Using JavaScript and Tencent Maps to implement map rectangular editing function. For more information, please follow other related articles on the PHP Chinese website!