我在使用json数组的坐标在传单地图上创建标记时遇到问题。
json示例:
{" ID":" 1""经度":" 8.1876""纬度&#34 ;: " 50.1297""名称":"莱茵兰普法尔茨"}
(背景信息:这来自一个PHP文件,它从数据库中提取数据,每10秒更新一次当前位置)
jquery代码:它在我的html和" get_marker"上创建地图。点击事件它启动ajax,它每隔10秒从我的.php文件中拉出一个新的json
$(document).ready(function () {
var map = L.map('map', {
center: [50.0231, 8.8849],
zoom: 9
});
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors'
}).addTo(map);
$("#get_marker").click(function(event){
startajax();
alert("get marker clicked");
});
$("#delete_marker").click(function(event){
deletemarkers();
alert("marker deleted");
});
function startajax () {
$.ajax({
url: ('query_fetcharray.php'),
data: {},
type: 'POST',
timeout: 10000,
dataType: 'json',
error: function() {
alert('Error, no Data received!');
},
success: drawmarker
})
};
以上所有内容似乎都运转良好 问题是使用json坐标获取地图上的实际标记。我的地图上没有显示任何内容。
我尝试使用json.longitude / json.latitude访问long和lat值,然后将它们转换为float =>然后保存在JS变量中:var longitude。 然后我将变量放入L.marker。
我的代码:
function drawmarker (json) {
var longitude = parseFloat(json.longitude);
var latitude = parseFloat(json.latitude);
L.marker([longitude, latitude], {
clickable: true
})
.bindPopup('hello')
.addTo(map);
};
问题似乎是实际变量,因为将一组坐标硬编码到L.marker中可以正常工作。
答案 0 :(得分:0)
我认为你过度思考浮点问题。试试这个更简单的方法:
function drawmarker (json) {
var longitude = json.longitude;
var latitude = json.latitude;
L.marker([latitude, longitude])
.bindPopup('hello')
.addTo(map);
};