2014-09-30 103 views
2

我想实现一个动态列表视图到谷歌地图infowindow点击标记时。我正在使用一段我知道在我正在开发的应用程序的另一个方面取得成功的代码。JQuery Mobile输出到谷歌地图信息窗口使用JSON

我显示了一个空白的infowindow,所以我只能猜测,当将输出分配给成为infowindow内容的变量时,我犯了一个错误。

以下JSON代码是成功的其他地方在我的应用

var file = "listview.php"; 
var output = ''; 

$.post(file, function(data) { 

    $.each(data, function(index, value){ 
     output += '<li><a href="#"">' + value.site_name + '</a></li>'; 
    }); 
$('#liststores').html(output).listview().listview('refresh'); 
}, "json"); 

我已经分配了各种功能被使用的变量。我已经为infowindow的内容分配了html变量的一些html代码。然后这些绑定到运行点击功能的函数并设置infowindow的内容。

for (var i = 0; i < markers.length; i++) { 
    var point = new google.maps.LatLng(
     parseFloat(markers[i].getAttribute("lat")), 
     parseFloat(markers[i].getAttribute("lon"))); 
    var html = '<div id="infowindow"><ul data-role="listview" id="liststores"></ul><div>'; 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: point, 
     icon: icon.icon, 
     id: id, 
    }); 
    bindInfoWindow(marker, map, infoWindow, html); 
} 

function bindInfoWindow(marker, map, infoWindow, html) { 
    google.maps.event.addListener(marker, 'click', function() { 
     infoWindow.setContent(html); 
     infoWindow.open(map, marker); 
    }); 
} 

任何意见将不胜感激。我相信我已经在将listview分配给html变量时犯了错误,因为JSON代码成功分配给应用程序中的另一个listview。

我的代码中的其他所有工作都会将标记绘制到地图上,但标记点击不会返回任何数据,也不会返回错误。

回答

0

这可能是因为列表视图不附加到DOM,但只在一个JavaScript变量

您是否尝试过做这样的事情,而不是

var html = '<div id="infowindow"><ul data-role="listview" id="liststores">'+output+'</ul><div>';