OpenLayers - 在地图上显示标记

时间:2013-12-16 02:35:36

标签: openlayers markers

我无法在地图上看到标记。在表中我可以看到所有的点,但在地图上它不会显示。 我猜问题就在这里:

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>

1 个答案:

答案 0 :(得分:1)

第一个问题是从venues内的OpenLayers块无法访问通过AJAX请求读取的变量<body>。如果要将每个数据点添加到地图,则需要将标记添加代码移动到$.each回调体。 另一个问题是,顾名思义,OpenLayers.LonLat的构造函数将纬度作为第一个参数,你以错误的顺序传递lat和lon,导致标记出现在南极洲的某个地方。

这是一个修复这两个问题的JSFiddle:http://jsfiddle.net/s9jGt/1/