-1
我是编程新手。我一直在尝试创建类似带有标签的室内地图的东西。我的问题是,如何更新数据库而不重新加载页面时如何刷新地图上的标签?将圆圈移动到d3.js中的新坐标
感谢您对这样回答 这里是一些代码:
<div id ="main" class="container">
<div class = "row">
<div id="map" class = "pull-left map"></div>
<?php
$tag_locations = array();
$sql = "SELECT activity_record.tag_id, employee.first_name, activity_record.x_coor, activity_record.y_coor, tag.tag_color, activity_record.timestamp FROM activity_record, tag, employee WHERE activity_record.tag_id = tag.tag_id && tag.employee_id = employee.employee_id && activity_record.timestamp = (SELECT MAX(t2.timestamp) FROM activity_record t2 WHERE t2.tag_id = activity_record.tag_id)";
$tag_result = $conn->query($sql);
while($tag_record =mysqli_fetch_assoc($tag_result)){
$tag_locations[] = $tag_record;
}
?>
<script type="text/javascript">
var data = <?php echo json_encode($tag_locations); ?>;
var svg = d3.select("#map").append("svg")
.attr("width", 700)
.attr("height", 450);
var g = svg.append("image")
.attr("xlink:href", "resources/images/map3.png")
.attr("width", 700)
.attr("height", 450)
.attr("x", 0)
.attr("y", 0);
var circle = svg.selectAll("circle")
.data(data)
.enter().append("circle")
.attr("cx", function(d) {return d.x_coor;})
.attr("cy", function(d) {return d.y_coor;})
.attr("r", 11)
.style("fill", function(d) {return d.tag_color;});
$('svg circle').tipsy({
gravity: 'w',
html: true,
title: function() {
var d = this.__data__;
return '<span style="color :' + d.tag_color + '">' + d.first_name + '</span>';
}
});
</script>
了解AJAX,以便您可以将数据动态加载为JSON并重新构建地图。 –
@BonHam [this](http://stackoverflow.com/a/4629878/3040381)答案类似于您想要的解决方案...虽然您不一定非要使用jQuery – Abdul