谷歌地图多标记工具提示只显示在Firefox的第一个标记

时间:2014-08-13 05:51:28

标签: php codeigniter google-maps firefox

我正在开发一个codeigniter项目,该项目在google地图中显示具有特定持续时间标记的访问路径。地图,标记,工具提示,折线一切都可以在 chrome 中正常工作。

但是在 firefox 中,只有一个工具提示会在鼠标悬停时显示在标记上。其他工具提示不会出现。然后,如果我点击外部地图,再次悬停,则工具提示会显示在该工具提示上,但。每个标记都是一样的。问题是只在firefox中。我从数据库中获取位置。 jsfiddle链接是:http://jsfiddle.net/msz08tjx/以下是整个代码:

<script>
    jQuery(document).ready(function(){

$('#frmGPSTag').validationEngine('attach',{
            onValidationComplete: function(form, status){
                if (status == true){
                    mapDisplay();
                }
            }
        });

function mapDisplay(){                          
            $.getJSON('<?php echo base_url(); ?>user/gps_tags_json/'+$("#datepicker1").val()+'/'+$("#datepicker2").val(), function(data){
                var locations = new Array();
                $.each( data, function( key, val ) {
                    var location = [ parseFloat(val.latitude), parseFloat(val.longitude), val.gps_tag_timestamp];
                    locations.push(location);
                });
                if(locations.length > 0)
                {
                    $("#map").css({'height': '600px'});

                    var map = new google.maps.Map(document.getElementById('map'), {
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                    });

                    var marker, point, travelCoordinates = new Array();
                    var bounds = new google.maps.LatLngBounds();

                    for (var i = 0; i < locations.length; i++) {
                        point = new google.maps.LatLng(locations[i][0], locations[i][1]);
                          marker = new google.maps.Marker({
                            position: point,
                            map: map,
                            title: locations[i][2]
                          });

                        travelCoordinates[i] = point 
                        bounds.extend(marker.position); 
                    }
                    map.fitBounds(bounds);
                    if(map.getZoom()> 10){
                    map.setZoom(10);
                    }

                    var travelPath = new google.maps.Polyline({
                        path: travelCoordinates,
                        geodesic: true,
                        strokeColor: '#FF0000',
                        strokeOpacity: 1.0,
                        strokeWeight: 2
                    });

                    travelPath.setMap(map); 
                }
                else
                {
                    $("#map").empty();
                    $("#map").css({'background-color': '','height': 'auto'});
                    $("#map").html("<?php echo '<ul class=\"list-group\"><li class=\"list-group-item list-group-item-warning\">'.$this->lang->line('no_record').'</li></ul>'; ?>");
                }
            });     
        }

    });
</script>

和我的datepicker函数是:

<script type="text/javascript">
    $(function() {
       $( "#datepicker1" ).datepicker({
          dateFormat: 'yy-mm-dd',
          onClose: function( selectedDate ) {
            $( "#datepicker2" ).datepicker( "option", "minDate", selectedDate );
          }
      });

      $( "#datepicker2" ).datepicker({
          dateFormat: 'yy-mm-dd',
          onClose: function( selectedDate ) {
            $( "#datepicker1" ).datepicker( "option", "maxDate", selectedDate );
          }
      });
    });
</script>

我在网上看到过很多类似的问题。但是没有一个解决方案适合我。任何帮助都会受到极大的关注。提前完成。

jsfiddle链接是:http://jsfiddle.net/msz08tjx/

3 个答案:

答案 0 :(得分:7)

使用刚刚发布的v3 js似乎无法解决Firefox中的问题。 同时添加以下标记选项将...

optimized:false

参考 - Issue 7136: Bug: Multiple marker titles not working in stable (3.17.15) version of API.

答案 1 :(得分:1)

这是"experimental version"的问题。不要在生产中使用实验版本,它可能会意外中断。

在API的包含中将v=3.exp更改为v=3

<script src='https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false'> </script>

要:

<script src='https://maps.googleapis.com/maps/api/js?v=3&sensor=false'> </script>

working fiddle(至少在我正在运行的Firefox版本中,31.0)

答案 2 :(得分:1)

由于Firefox 39不仅存在标题标记未显示onmousover的问题,而且鼠标悬停addListener事件也未触发。

将“optimized:false”属性添加到标记属性也解决了鼠标悬停addListener事件的问题。