使用Javascript从html表中的数据在Google地图上显示多个标记

使用Javascript从html表中的数据在Google地图上显示多个标记,javascript,jquery,html,google-maps,Javascript,Jquery,Html,Google Maps,我试图在google地图上为同一页面上加载的html表的每一行显示一个标记 因此html表的标题是“Site”、“Lat”和“Lon”。我需要使用JQuery来刮取行值,并将它们放入谷歌地图的var位置,该地图将显示在本例的表格下方(我需要在我的应用程序的表格上方使用它,但一旦它起作用,我可以自己做) 我差一点就把它弄到手了,但就是没法让它发挥作用 HTML <table> <thead> <th> Site </th> <th&g

我试图在google地图上为同一页面上加载的html表的每一行显示一个标记

因此html表的标题是“Site”、“Lat”和“Lon”。我需要使用JQuery来刮取行值,并将它们放入谷歌地图的var位置,该地图将显示在本例的表格下方(我需要在我的应用程序的表格上方使用它,但一旦它起作用,我可以自己做)

我差一点就把它弄到手了,但就是没法让它发挥作用


HTML

<table>
<thead>
  <th> Site </th>
  <th> Lat </th>
  <th> Lon </th>
</thead>
    <tbody>
        <tr>
            <td>Site 1</td>
            <td>53.19373465</td>
            <td>-6.39347735</td>
        </tr>
        <tr>
            <td>Site 2</td>
            <td>53.19373465</td>
            <td>-6.39347735</td>
        </tr>
        <tr>
            <td>Site 3</td>
            <td>53.19373465</td>
            <td>-6.39347735</td>
        </tr>
    </tbody>
</table>
<script
  src=
"http://maps.googleapis.com/maps/api/js?key=AIzaSyB1tbIAqN0XqcgTR1-          FxYoVTVq6Is6lD98">
</script>

 <body onload="initialize()">
  <div id="default" style="width:100%; height:100%"></div>
 </body>

Javascript/JQuery

var table = $("table tbody");

    table.find('tr').each(function (i) {
        var $tds = $(this).find('td'),
            siteName = $tds.eq(0).text(),
            Lat = $tds.eq(1).text();
            Lon = $tds.eq(2).text();
        // do something with siteName, timeStamp, Lat, Lon
        var locations = [('[' + siteName
              + ',' + Lat
              + ',' + Lon + ']')];
    });

  function initialize() {

    var myOptions = {
      center: new google.maps.LatLng(53.3242381,-6.3857877),
      zoom: 7,
      mapTypeId: google.maps.MapTypeId.ROADMAP

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

    setMarkers(map,locations)

  }



  function setMarkers(map,locations){

      var marker, i

for (i = 0; i < locations.length; i++)
 {  

 var loan = locations[i][0]
 var lat = locations[i][1]
 var long = locations[i][2]

  latlngset = new google.maps.LatLng(lat, long);

  var marker = new google.maps.Marker({  
          map: map, title: loan , position: latlngset  
        });
        map.setCenter(marker.getPosition())


        var content = "Site: " + loan +  '</h3>'    

  var infowindow = new google.maps.InfoWindow()

google.maps.event.addListener(marker,'click', (function(marker,content,infowindow){ 
        return function() {
           infowindow.setContent(content);
           infowindow.open(map,marker);
        };
    })(marker,content,infowindow)); 

  }
  }
var table=$(“table tbody”);
表.find('tr')。每个函数(i){
var$tds=$(this.find('td'),
siteName=$tds.eq(0.text(),
Lat=$tds.eq(1.text();
Lon=$tds.eq(2.text();
//对站点名称、时间戳、Lat和Lon进行处理
变量位置=[('['+siteName
+“,”+Lat
+“,”+Lon+']');
});
函数初始化(){
变量myOptions={
中心:新google.maps.LatLng(53.3242381,-6.3857877),
缩放:7,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById(“默认”),
肌肽);
设置标记(地图、位置)
}
功能设置标记(地图、位置){
变量标记
对于(i=0;i

你就快到了,我已经清理了一点过程,但这会让它工作-你的表在同一个位置也有3个标记,所以你可能想改变它

var table = $("table tbody");

function attainLocation() {
    var tableLocs = [];
    table.find('tr').each(function(i) {
        var $tds = $(this).find('td'),
            siteName = $tds.eq(0).text(),
            Lat = $tds.eq(1).text();
        Lon = $tds.eq(2).text();
        var obj = {
            'sitename': siteName,
            'lat': Lat,
            'lon': Lon
        };
        tableLocs.push(obj);
    });
    return tableLocs;
}
google.maps.event.addDomListener(window, 'load', initialize);

function initialize() {

    var myOptions = {
        center: new google.maps.LatLng(53.3242381, -6.3857877),
        zoom: 7,
        mapTypeId: google.maps.MapTypeId.ROADMAP

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

    var locations = attainLocation();
    setMarkers(map, locations)

}

function setMarkers(map, locations) {

    var marker, i

    for (i = 0; i < locations.length; i++) {

        var loan = locations[i].sitename
        var lat = locations[i].lat
        var long = locations[i].lon

        latlngset = new google.maps.LatLng(lat, long);

        var marker = new google.maps.Marker({
            map: map,
            title: loan,
            position: latlngset
        });
        map.setCenter(marker.getPosition())


        var content = "Site: " + loan + '</h3>'

        var infowindow = new google.maps.InfoWindow()

        google.maps.event.addListener(marker, 'click', (function(marker, content, infowindow) {
            return function() {
                infowindow.setContent(content);
                infowindow.open(map, marker);
            };
        })(marker, content, infowindow));

    }
}
var table=$(“table tbody”);
函数位置(){
var tableLocs=[];
表.find('tr')。每个函数(i){
var$tds=$(this.find('td'),
siteName=$tds.eq(0.text(),
Lat=$tds.eq(1.text();
Lon=$tds.eq(2.text();
var obj={
“sitename”:sitename,
“lat”:lat,
“lon”:lon
};
表位推送(obj);
});
返回表;
}
google.maps.event.addDomListener(窗口“加载”,初始化);
函数初始化(){
变量myOptions={
中心:新google.maps.LatLng(53.3242381,-6.3857877),
缩放:7,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById(“默认”),
肌肽);
变量位置=位置();
设置标记(地图、位置)
}
功能设置标记(地图、位置){
变量标记
对于(i=0;i
您是否不知道您的内容应该在标签中?如果不是,我建议在做DOM操作之前先学习基本的HTML。。。有很多错误,比如变量的范围(
var locations
),这些都是非常基本的……您使用的工具肯定是MooTools吗?@T J是的,我知道,这里的html代码只是示例/JSfiddle
var table = $("table tbody");

function attainLocation() {
    var tableLocs = [];
    table.find('tr').each(function(i) {
        var $tds = $(this).find('td'),
            siteName = $tds.eq(0).text(),
            Lat = $tds.eq(1).text();
        Lon = $tds.eq(2).text();
        var obj = {
            'sitename': siteName,
            'lat': Lat,
            'lon': Lon
        };
        tableLocs.push(obj);
    });
    return tableLocs;
}
google.maps.event.addDomListener(window, 'load', initialize);

function initialize() {

    var myOptions = {
        center: new google.maps.LatLng(53.3242381, -6.3857877),
        zoom: 7,
        mapTypeId: google.maps.MapTypeId.ROADMAP

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

    var locations = attainLocation();
    setMarkers(map, locations)

}

function setMarkers(map, locations) {

    var marker, i

    for (i = 0; i < locations.length; i++) {

        var loan = locations[i].sitename
        var lat = locations[i].lat
        var long = locations[i].lon

        latlngset = new google.maps.LatLng(lat, long);

        var marker = new google.maps.Marker({
            map: map,
            title: loan,
            position: latlngset
        });
        map.setCenter(marker.getPosition())


        var content = "Site: " + loan + '</h3>'

        var infowindow = new google.maps.InfoWindow()

        google.maps.event.addListener(marker, 'click', (function(marker, content, infowindow) {
            return function() {
                infowindow.setContent(content);
                infowindow.open(map, marker);
            };
        })(marker, content, infowindow));

    }
}