2017-09-13 74 views
0

我在<option>两个数据属性,这些属性在地图中latlngjQuery的数据属性值丢失

<option id="riderInfo" data-lat="" data-lng=""></option> 

的Jquery:

var lat = $("#riderInfo").val($(this).data('lat')); 
var lng = $("#riderInfo").val($(this).data('lng')); 

我打印它的值:

console.log(lat) 

从select和gi中获取值的实际代码对地图,所以地图将chnage到指定的位置。的console.log(lat)

$(document).ready(function(){ 
    var lat = $("#riderInfo").val($(this).data('lat')); 
    var lng = $("#riderInfo").val($(this).data('lng')); 
    console.log(lat); 

    google.maps.event.addDomListener(window, 'load', init); 
    function init() { 
    var locations = [ 
     ['Rider', 33.686073, 73.0175017, 3] 
     ]; 
     var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 10, 
     center: new google.maps.LatLng(33.68, 73.01), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
     }); 
     var infowindow = new google.maps.InfoWindow(); 
     var marker, i; 
     for (i = 0; i < locations.length; i++) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map 
     }); 
     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
      return function() { 
      infowindow.setContent(locations[i][0]); 
      infowindow.open(map, marker); 
      } 
     })(marker, i)); 
     } 
    } 
}); 

结果是:

[option#riderInfo, context: document, selector: "#riderInfo"] 

我在想什么?

+1

你的问题并不十分清楚。什么是'这个'? 'data-lat'和'data-lng'的价值是什么?应该显示的结果是什么,以及如何检查它?什么是HTML?你为什么设置两次相同的值?第一个电话是完全多余的。 –

+0

@RoryMcCrossan我已经更新了这个问题,你说得对,问题并不清楚 – Gammer

+0

#riderInfo不能是'this'我假设你只是想把它切换到值,所以试试'$(“#riderInfo”) .val($('#riderInfo')。data('lat'))' – nodws

回答

1

通过使用jquery设置值,元素的jquery对象被返回并设置为变量。你应该用:

var lat = $('#riderInfo').data('lat'); 
var lng = $('#riderInfo').data('lng'); 
+0

这在逻辑上与OP已经有的相同 –

+0

No. $(“#riderInfo”)。val($(this).data ('lat'));''会返回元素'“#riderInfo'的jquery对象 –

+0

你可以在控制台'$('input:eq(1)')。val('koala')'处记录这个对象,并且检查 –

1

在这里,你去了一个解决方案

$(document).ready(function(){ 
 
    var lat = parseFloat($("#riderInfo").data('lat')); 
 
    var lng = parseFloat($("#riderInfo").data('lng')); 
 
    console.log(lat); 
 

 
    google.maps.event.addDomListener(window, 'load', init); 
 
    function init() { 
 
    var locations = [ 
 
     ['Rider', lat, lng, 3] 
 
     ]; 
 
     var map = new google.maps.Map(document.getElementById('map'), { 
 
     zoom: 10, 
 
     center: new google.maps.LatLng(lat, lng), 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
     }); 
 
     var infowindow = new google.maps.InfoWindow(); 
 
     var marker, i; 
 
     for (i = 0; i < locations.length; i++) { 
 
     marker = new google.maps.Marker({ 
 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
 
      map: map 
 
     }); 
 
     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
 
      return function() { 
 
      infowindow.setContent(locations[i][0]); 
 
      infowindow.open(map, marker); 
 
      } 
 
     })(marker, i)); 
 
     } 
 
    } 
 
});

获取的latlng到变量&的数据值的map函数使用它

希望这会帮助你。