Я работаю над визуализацией данных на карте, используя d3js.Я был в состоянии показать карту, которая, если я поставлю статические координаты, она покажет маркер на карте.но я хочу получить координаты из базы данных и показать маркер на карте, хотя передача координат со стороны сервера в d3js - вот где у меня возникают проблемы.Я прошел через некоторые вопросы, связанные с этим, которые действительно помогли мне до сих пор, но я застрял здесь, поскольку метод, переданный d3js, показывает нулевое значение.
var width = window.innerWidth,
height = window.innerHeight;
// create svg for viz
var svg = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", height);
// define JSON map data
d3.json("NGA_adm2_conv.json", function (json) {
// create a first guess for the projection
var center = d3.geo.centroid(json);
var scale = 3000; //150;//8000;
var offset = [width / 2, height / 2];
var projection = d3.geo.mercator()
.center(center)
// .rotate([85.8, 0])
.scale(scale)
.translate(offset);
var geoPath = d3.geo.path()
.projection(projection);
svg.append("g")
.selectAll("path")
.data(json.geometries)
.enter()
.append("path")
.attr("d", geoPath)
.attr("class", "areas")
.attr("fill", "Steelblue");
// Create data for circles:
//passing method to var marker then to d3
var markers = '<%= JasonGet() %>';
// Add circles:
svg
.selectAll("myCircles")
.data(markers)
.enter()
.append("circle")
.attr("cx", function (d) { return projection([d.longitude, d.latitude])[0] })
.attr("cy", function (d) { return projection([d.longitude, d.latitude])[1] })
.attr("r", 4)
.style("fill", "69b3a2")
.attr("stroke", "#69b3a2")
.attr("stroke-width", 2)
.attr("fill-opacity", .4)
});
//below is my asp.net c# code for fetching coordinates from database
public string jsonString = "";
[WebMethod]
public string JasonGet()
{
var queryWithForJson = "SELECT latitude, longitude FROM tblCoordinates FOR JSON AUTO";
var conn = new SqlConnection(connetionString);
var cmd = new SqlCommand(queryWithForJson, conn);
conn.Open();
var jsonResult = new StringBuilder();
var reader = cmd.ExecuteReader();
if (!reader.HasRows)
{
jsonResult.Append("[]");
}
else
{
while (reader.Read())
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
Label1.Text = jsonResult.ToString();
return (new JavaScriptSerializer()).Serialize(jsonResult);
}