如何绘制一个可编辑和可拖动的五边形,并找到是否有任何点在里面
How to draw an editable and draggable pentagon and find if any point lies inside it or not?
我遇到了一个与使用google api绘制可编辑和可拖动的五边形相关的问题。
问题:当我尝试编辑多边形时,它的点不断增加。但我需要把它固定为5点。
代码:
Poly1 = new google.maps.Polygon({
Path: redCoords,
fillColor:"#FF0000",
fillOpacity:0.2,
strokeColor:"#FF0000",
strokeOpacity:1.0,
strokeWeight:1,
draggable: true,
editable: true
});
实际要求是:
我必须允许用户绘制最多10个五边形(可编辑和可拖动),然后我需要找到我的点是否在多边形内。
下面是一些创建五边形的工作代码,每个坐标上都有标记。多边形本身是不可编辑的…当用户拖动其中一个标记时,我们重新绘制多边形。
<!DOCTYPE html>
<html>
<head>
<title>Draggable polygons</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% }
</style>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>
function initialize() {
var map = new google.maps.Map(document.getElementById("map_canvas"), {
zoom: 15,
center: {lat: 51.476706, lng: 0},
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// create an array of coordinates for a pentagonal polygon
var arrCoords = [
new google.maps.LatLng(51.474821, -0.001935),
new google.maps.LatLng(51.474647, 0.003966),
new google.maps.LatLng(51.477708, 0.004073),
new google.maps.LatLng(51.479753, 0.000468),
new google.maps.LatLng(51.477654, -0.002192)
];
var polygon = new google.maps.Polygon({
paths: arrCoords,
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#FF0000",
fillOpacity: 0.35,
map: map
});
// add a marker at each coordinate
for (var i = 0; i < arrCoords.length; i++) {
var marker = new google.maps.Marker({
position: arrCoords[i],
map: map,
draggable: true
});
bindMarker(marker, arrCoords, i, polygon);
}
}
function bindMarker(marker, arrCoords, i, polygon) {
google.maps.event.addListener(marker, 'dragend', function(e) {
// update the coordinates of the corresponding point in the polygon path
arrCoords[i] = e.latLng;
polygon.setPath(arrCoords);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map_canvas"></div>
</body>
</html>
你的问题的第二部分,即如何检测一个点是否在多边形内,实际上是一个单独的问题。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 是否可以禁用jquery中的单个单选按钮
- 是否可以从父类访问子类的属性
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 如何让程序检查所选单词中是否有按键
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何使用jquery确定用户是否年满18岁
- 如何绘制一个可编辑和可拖动的五边形,并找到是否有任何点在里面