Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图多边形悬停可点击_Javascript_Jquery_Html_Css_Google Maps - Fatal编程技术网

Javascript 谷歌地图多边形悬停可点击

Javascript 谷歌地图多边形悬停可点击,javascript,jquery,html,css,google-maps,Javascript,Jquery,Html,Css,Google Maps,我在编码方面不是很有经验(除了html和css),我正在尝试创建一个带有自定义多边形区域的邻里地图,当鼠标悬停在上面时会高亮显示,并且可以单击,会显示一个小图像和其他信息。基本上我是想重现你在。。。我想知道他们是如何创建它的,我假设他们使用谷歌地图api来创建它,但我不知道怎么做。我会很感激你对他们如何创造它的想法,以及我如何能继续创造同样的东西。谢谢这似乎也是许多其他人正在尝试创建或想出如何创建的东西。地图的API如下: 理论上似乎相当简单,但实际上可能更复杂 在API中,您可以看到一些东西,

我在编码方面不是很有经验(除了html和css),我正在尝试创建一个带有自定义多边形区域的邻里地图,当鼠标悬停在上面时会高亮显示,并且可以单击,会显示一个小图像和其他信息。基本上我是想重现你在。。。我想知道他们是如何创建它的,我假设他们使用谷歌地图api来创建它,但我不知道怎么做。我会很感激你对他们如何创造它的想法,以及我如何能继续创造同样的东西。谢谢这似乎也是许多其他人正在尝试创建或想出如何创建的东西。

地图的API如下:

理论上似乎相当简单,但实际上可能更复杂

在API中,您可以看到一些东西,首先:

// Define the LatLng coordinates for the polygon.
  var triangleCoords = [
  new google.maps.LatLng(25.774252, -80.190262),
  new google.maps.LatLng(18.466465, -66.118292),
  new google.maps.LatLng(32.321384, -64.75737)
];
这些是坐标,总共只有三个,所以它形成了一个三角形。形状是自动完成的,您只需查找/输入坐标即可。在本例中,TriangalCoords是指定给值集的名称,您将在下一行中再次使用此名称

// Construct the polygon.
bermudaTriangle = new google.maps.Polygon({
paths: triangleCoords,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 3,
fillColor: '#FF0000',
fillOpacity: 0.35
});
在您看到路径:trianglecoords的地方,可以在此处使用自定义覆盖。最后

// Add a listener for the click event.
google.maps.event.addListener(bermudaTriangle, 'click', showArrays);
将click事件更改为hover/mouseover事件(不确定是哪一个,我自己也没有做过,但它似乎是其中之一)。您可以将其用于悬停和单击事件,同样,不太确定它是如何完成的,但肯定是可能的

function showArrays(event) {

//Javascript & Jquery goes here, probably the more challenging part to implement.

}

下面是一个完整、简单的示例,说明如何实现这一点。为简单起见,它仅显示一个以纬度/经度(0,0)为中心的正方形作为演示

<html>
    <head>
        <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY_HERE&amp;sensor=false"></script>
        <script type="text/javascript">
            function init() {
                // STEP 1: Create a map in the map div.
                var mapDiv = document.getElementById('map');
                var map = new google.maps.Map(mapDiv, {
                    center: new google.maps.LatLng(0.0, 0.0),
                    zoom: 5
                });

                // STEP 2: Create a polygon - in this case a red square centred at (0, 0). You'd want to create a polygon per neighbourhood.
                var polygon = new google.maps.Polygon({
                    map: map,
                    paths: [
                        new google.maps.LatLng(-1.0, -1.0),
                        new google.maps.LatLng(-1.0, +1.0),
                        new google.maps.LatLng(+1.0, +1.0),
                        new google.maps.LatLng(+1.0, -1.0)
                    ],
                    strokeColor: '#ff0000',
                    strokeOpacity: 0.8,
                    strokeWeight: 2,
                    fillColor: '#ff0000',
                    fillOpacity: 0.5
                });

                // STEP 3: Listen for clicks on the polygon.
                google.maps.event.addListener(polygon, 'click', function (event) {
                    alert('clicked polygon!');
                });
                // STEP 4: Listen for when the mouse hovers over the polygon.
                google.maps.event.addListener(polygon, 'mouseover', function (event) {
                    // Within the event listener, "this" refers to the polygon which
                    // received the event.
                    this.setOptions({
                        strokeColor: '#00ff00',
                        fillColor: '#00ff00'
                    });
                });
                // STEP 5: Listen for when the mouse stops hovering over the polygon.
                google.maps.event.addListener(polygon, 'mouseout', function (event) {
                    this.setOptions({
                        strokeColor: '#ff0000',
                        fillColor: '#ff0000'
                    });
                });
            };
        </script>
        <style>
            #map {
                width: 300px;
                height: 200px;
            }
        </style>
    </head>
    <body onload="init();">
        <div id="map"></div>
    </body>
</html>

函数init(){
//步骤1:在map div中创建地图。
var mapDiv=document.getElementById('map');
var map=new google.maps.map(mapDiv{
中心:新的google.maps.LatLng(0.0,0.0),
缩放:5
});
//第2步:创建一个多边形——在本例中是一个以(0,0)为中心的红色正方形。您可能希望为每个邻域创建一个多边形。
var polygon=新建google.maps.polygon({
地图:地图,
路径:[
新的google.maps.LatLng(-1.0,-1.0),
新的google.maps.LatLng(-1.0,+1.0),
新的google.maps.LatLng(+1.0,+1.0),
新google.maps.LatLng(+1.0,-1.0)
],
strokeColor:“#ff0000”,
笔划不透明度:0.8,
冲程重量:2,
填充颜色:'#ff0000',
填充不透明度:0.5
});
//第三步:倾听多边形上的点击。
google.maps.event.addListener(多边形,'click',函数(事件){
警报('clicked polygon!');
});
//第4步:当鼠标悬停在多边形上时,请倾听。
google.maps.event.addListener(多边形,'mouseover',函数(事件){
//在事件侦听器中,“this”指的是
//收到了这个事件。
此选项为.setOptions({
strokeColor:“#00ff00”,
填充颜色:“#00ff00”
});
});
//第5步:倾听鼠标何时停止在多边形上悬停。
google.maps.event.addListener(多边形,'mouseout',函数(事件){
此选项为.setOptions({
strokeColor:“#ff0000”,
填充颜色:“#ff0000”
});
});
};
#地图{
宽度:300px;
高度:200px;
}
基本上,您可以执行以下操作(每个点对应于JavaScript代码中的编号注释):

  • 创建一张地图
  • 在地图上为每个邻居绘制多边形
  • 对于每个多边形,添加“单击”事件的侦听器。只要单击多边形,就会调用listener函数。在这里,我只是显示一个警报-你可以做任何你喜欢的事情
  • 对于每个多边形,添加“鼠标悬停”事件的侦听器。只要鼠标悬停在多边形上,就会调用listener函数。在处理程序中,将多边形的笔划和填充颜色更改为其他颜色
  • 对于每个多边形,添加“mouseout”事件的侦听器。只要鼠标停止悬停在多边形上,就会调用listener函数。在处理程序中,将多边形的笔划和填充颜色更改回其原始值
  • 希望这一切都有意义。如果您想了解更多信息,可以在此处查找所有相关详细信息。也值得您花时间看看其中的一些,特别是其中的一些和示例