嗨我想点击一个图形时在谷歌地图上显示一些别针。 我将所需的所有数据存储在span标记的data-location元素中:
<span class="showOnMap" data-location="{"lat":"51.4894805","lng":"-0.2942533000000367","name":"Brentford Towers","addr":"Green Dragon Lane\r\nBrentford TW8 0DF","pinType":"loc"}"> <img width="32" height="32" src="/images/Icons/map-icon.png">
</span>
我的点击功能是:
$('.showOnMap').click(function(){
//alert('click');
var myData = $(this).data('location');
console.log(myData);
createMarkerWithInfo(myData);
//addToPanel(panelData);
})
创建标记的功能导致我的问题是,传递给它的数据在我发出警报时显示为未定义,或者尝试使用它来创建标记,但它确实显示在控制台中,但是从我的内容一直在阅读控制台不应该被信任,因为它将显示当前状态的数据,即它可能没有在实际调用控制台时定义,
我不明白为什么它的未定义为json数据在dom中(它实际上由php生成)所以在dom中定义,我可以理解我是否正在进行Ajax调用,为什么它可能会出现未定义。 / p>
function createMarkerWithInfo(myData){
//console.log(myData);
//coords = myData.latlng.split(',');
alert(myData + 'pinType: '+ myData.pinType + ' lat: '+ myData.lat + ' lng: ' +myData.lng);
myLatLng = new google.maps.LatLng(myData.lat, myData.lng);
if(myData.pinType == 'loc'){
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: myData.name,
icon: locimage,
shadow: locshadow,
shape: locshape
});
}
if(myData.pinType == 'ub'){
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: myData.name,
icon: ubimage,
shadow: ubshadow,
shape: locshape
});
}
//alert('lat: '+myData.lat+','+'lng: '+myData.lng);
// Wrapping the event listener inside an anonymous function
// that we immediately invoke and passes the variable i to.
(function(myData, marker) {
// Creating the event listener. It now has access to the values of
// myData and marker as they were during its creation
google.maps.event.addListener(marker, 'click', function() {
//create thecontent for the infowindow
var content = createContent(myData);
infowindow.setContent(content);
infowindow.open(map, marker);
});
})(myData, marker);
markersArray.push(marker);
markersPosArray.push(myLatLng);
bounds.extend(myLatLng);
map.fitBounds(bounds);
zoomMarkers();
}
http://2012.reelfilmlocations.co.uk/Modules/builder_areaLocs.php 是我正在处理的页面,有什么奇怪的是我有一个类似的页面(使用PHP包括而不是一个独立的页面)具有相同的功能,它的工作原理,香港专业教育学院看了两个,不能看到差异,因为它是什么导致它未定义) http://2012.reelfilmlocations.co.uk/locations-london-west/
答案 0 :(得分:0)
出于某种原因,json被包裹在[ ]
标签中。
alert(myData + 'pinType: '+ myData[0].pinType + ' lat: '+ myData[0].lat + ' lng: ' +myData[0].lng);
输出正确的值。