首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我输入文本框,则标记将获得长纬度的值。但当它进入多边形时不会触发

如果我输入文本框,则标记将获得长纬度的值。但当它进入多边形时不会触发
EN

Stack Overflow用户
提问于 2015-04-24 05:40:03
回答 1查看 66关注 0票数 0

如果禁用拖动标记,则当我在多边形上拖放标记时,它会发出警告google.maps.event.addListener(marker0, '**dragend**', function(e)

如何确定输入的值是在多边形的内部还是外部?

代码语言:javascript
运行
复制
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);
代码语言:javascript
运行
复制
<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>&nbsp;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-24 08:19:21

问题是,您使用的是几何学库中的行(如google.maps.geometry.poly.containsLocation(e.latLng, dzone) )

但是,您还没有加载几何图形库。更改:

代码语言:javascript
运行
复制
<script src="http://maps.googleapis.com/maps/api/js"></script>

至:

代码语言:javascript
运行
复制
<script src="http://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29839556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档