如果禁用拖动标记,则当我在多边形上拖放标记时,它会发出警告google.maps.event.addListener(marker0, '**dragend**', function(e)
。
如何确定输入的值是在多边形的内部还是外部?
function initialize() {
x = document.getElementById("x").value;
y = document.getElementById("y").value;
var myCenter = new google.maps.LatLng(14.466465, -56.118292);
var latLng = new google.maps.LatLng(x, y);
var mapProp = {
center: latLng,
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
var marker1 = new google.maps.Marker({
position: myCenter,
title: 'Point A',
draggable: true,
});
marker1.setMap(map);
var marker0 = new google.maps.Marker({
position: latLng,
title: 'BWE',
map: map,
draggable: true,
});
marker0.setMap(map);
var myCity = new google.maps.Circle({
center: latLng,
radius: 100,
strokeColor: "#0000FF",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#0000FF",
fillOpacity: 0.4
});
myCity.setMap(map);
var ne0 = new google.maps.LatLng(25.774252, -80.190262);
var ne01 = new google.maps.LatLng(18.466465, -66.118292);
var ne02 = new google.maps.LatLng(32.321384, -64.75737);
var n0 = new google.maps.LatLng(14.466465, -56.118292);
var n01 = new google.maps.LatLng(27.774252, -30.190262);
var n02 = new google.maps.LatLng(22.321384, -54.75737);
var n03 = new google.maps.LatLng(32.321384, -60.75737);
var zone = [
n0, n01, n02, n03];
var zone0 = [
ne0, ne01, ne02, ne0];
var dzone = new google.maps.Polygon({
paths: zone,
strokeColor: "#0000FF",
strokeOpacity: 1.5,
strokeWeight: 2,
fillColor: "#ff0000",
fillOpacity: 1,
clickable: false
});
dzone.setMap(map);
var dzone0 = new google.maps.Polygon({
paths: zone0,
strokeColor: "#0000FF",
strokeOpacity: 1.5,
strokeWeight: 2,
fillColor: "#ff0000",
fillOpacity: 1,
clickable: false
});
dzone0.setMap(map);
google.maps.event.addListener(marker0, 'dragend', function (e) {
if (google.maps.geometry.poly.containsLocation(e.latLng, dzone)) {
window.open("siren.html", "mywindow");
window.alert("Danger!");;
document.body.style.backgroundColor = "red";
} else if (google.maps.geometry.poly.containsLocation(e.latLng, dzone0)) {
window.open("siren.html", "mywindow");
window.alert("Danger!");;
document.body.style.backgroundColor = "red";
} else {
document.body.style.backgroundColor = "white";
}
var m = new google.maps.Marker({
position: e.latLng,
map: map,
icon: 'pi.png'
})
});
}
google.maps.event.addDomListener(window, 'load', initialize);
<script src="http://maps.googleapis.com/maps/api/js"></script>
<div id="googleMap" style="width:500px;height:380px;"></div>Langtitude
<input id="x" type="number" value="14" onkeyup="initialize('x')">Altitude
<input id="y" type="number" value="-56" onkeyup="initialize('y')">
<button type="button" onclick="initialize()">Submit</button>
发布于 2015-04-24 08:19:21
问题是,您使用的是几何学库中的行(如google.maps.geometry.poly.containsLocation(e.latLng, dzone)
)
但是,您还没有加载几何图形库。更改:
<script src="http://maps.googleapis.com/maps/api/js"></script>
至:
<script src="http://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
https://stackoverflow.com/questions/29839556
复制相似问题