我正在开发一个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/
答案 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事件的问题。