我无法在地图上看到标记。在表中我可以看到所有的点,但在地图上它不会显示。 我猜问题就在这里:
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(venues.location.lat,venues.location.lng),icon));
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(venues.location.lat,venues.location.lng),icon.clone()));
当我放置一些坐标而不是venues.location.lat,venues.location.lng
时,它会显示标记。
......但不知道如何解决它。
<script type="text/javascript">
$.getJSON('https://api.foursquare.com/v2/venues/search?ll=32.7153,-117.1564&limit=14&radius=1000&client_id=PKAHBB1OAX0B000CG5UUYO4BXV0LWQWKFB51EK3XVNFJ2ULS&client_secret=RDPX01C01RHCYASZIKVH5XXMPVFIPLFHFP1D53UR4GUWQD50&v=20120101',
function(data) {
console.log(data);
$.each(data.response.venues, function(i,venues){
content = '<p>Name: ' + venues.name +
' Address: ' + venues.location.address +
' Lat/long: ' + venues.location.lat + ', ' + venues.location.lng + '</p>';
$(content).appendTo("#venues");
$('#table').append("<tr><td>" + venues.name + "</td><td>" + venues.location.address + "</td><td>" +venues.location.lat + "</td><td>" + venues.location.lng + "</td></tr >");
});
});
</script>
答案 0 :(得分:1)
第一个问题是从venues
内的OpenLayers块无法访问通过AJAX请求读取的变量<body>
。如果要将每个数据点添加到地图,则需要将标记添加代码移动到$.each
回调体。
另一个问题是,顾名思义,OpenLayers.LonLat
的构造函数将纬度作为第一个参数,你以错误的顺序传递lat和lon,导致标记出现在南极洲的某个地方。
这是一个修复这两个问题的JSFiddle:http://jsfiddle.net/s9jGt/1/