【问题标题】:How to display Info Window just above polyline in Google Map?如何在谷歌地图的折线上方显示信息窗口?
【发布时间】:2014-02-22 07:17:17
【问题描述】:

这里的问题是我从数据库中获取纬度和经度信息,并使用信息窗口在谷歌地图上绘制折线,它与标记一起工作得很好。但是,即使我已经设置了它的位置,信息窗口也会出现在谷歌地图的顶部。 我使用的代码如下:-

 <script type="text/javascript">


 function initialize()
        {
          var map;

           var markers = JSON.parse('<%=ConvertDataTabletoString() %>');
     var infoWindow = new google.maps.InfoWindow({maxWidth:200,minWidth:200});
           var marker;

           var x=new google.maps.LatLng(16.697000,74.244000);
       var stavanger=new google.maps.LatLng(markers[0].lat1, markers[0].lng1);

         var london=new google.maps.LatLng(markers[0].lat, markers[0].lng);
           var j=0;

           var i=0;
           var points=new Array();
           var points2=new Array();

           var mapProp = {
           center:new google.maps.LatLng(markers[0].lat, markers[0].lng),
           zoom:14,
           mapTypeId:google.maps.MapTypeId.ROADMAP

            }; 
   var map=new google.maps.Map(document.getElementById("map_canvas"),mapProp);

             google.maps.event.addListener(map, "click", function(event)
        {

                var marker = new google.maps.Marker({
                position: event.latLng, 
                 animation: google.maps.Animation.DROP,
                map: map

                });


              document.getElementById("txttolat").value = event.latLng.lat();
             document.getElementById("txttolong").value = event.latLng.lng();

               var pt=event.latLng.lat();
             points[j]=event.latLng.lat();

             points2[j]=event.latLng.lng();
             j=j+1;

              document.getElementById("txtlat").value = points[0];
             document.getElementById("txtlong").value = points2[0];
             //            });

              });

             for (i = 0; i < markers.length; i++) {
             var data = markers[i]

    var stavanger2=new google.maps.LatLng(markers[i].lat1, markers[i].lng1);

         var london2=new google.maps.LatLng(markers[i].lat, markers[i].lng);

              var myTrip=[stavanger2,london2];
               var flightPath=new google.maps.Polyline({




                path:myTrip,
            strokeColor:"#0000FF",
             strokeOpacity:0.8,
             strokeWeight:10,
               map: map,
               title: data.title
                    });
                  // }
                  (function(flightPath, data) {

           google.maps.event.addListener(flightPath, 'click', function(e) {
                 // alert('you clicked polyline');

               infoWindow.setContent(data.description);

                 infoWindow.open(map,flightPath);
                 infoWindow.setPosition(e.latLng);
                 document.getElementById("txtname").value = data.title;

                  document.getElementById("txtlat").value = e.latLng.lat();
                  document.getElementById("txtlong").value = e.latLng.lng();
                     });

                      })(flightPath, data);


                       }
                       }



               google.maps.event.addDomListener(window, 'load', initialize);
                    </script>

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    您必须将click 事件侦听器更改为flightpath

    来自google api参考InfoWindow class方法open()被定义为

    open(map?:Map|StreetViewPanorama, anchor?:MVCObject) 在给定地图上打开此信息窗口。可选地,信息窗口可以与锚相关联。在核心 API 中,唯一的锚点是 Marker 类。但是,锚点可以是任何 MVCObject,它公开 LatLng 位置属性和可选的用于计算 pixelOffset 的 Point anchorPoint 属性(请参阅 InfoWindowOptions)。 anchorPoint 是从锚点位置到信息窗口尖端的偏移量。

    您使用flightPath(折线)作为不提供位置属性的锚点。

    所以,首先,您获得点击位置,然后在地图上打开信息窗口:

    infoWindow.setPosition(e.latLng);
    infoWindow.open(map);
    
    // infoWindow.open(map,flightPath);
    // infoWindow.setPosition(e.latLng);
    

    检查example at jsbin。注意:我不得不伪造 JSON.parse() 方法来获取一些数据。

    【讨论】:

    • 嘿,谢谢,但它仍然向我显示相同的结果,并且关闭按钮也没有显示在 InfoWindow 上,我真的不明白该怎么做?
    • 嘿,非常感谢,非常感谢您抽出一些时间来举例说明。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2017-01-25
    • 2013-10-04
    • 2020-04-26
    • 2016-07-03
    • 2020-04-27
    • 2016-12-21
    • 2012-02-18
    • 1970-01-01
    相关资源
    最近更新 更多