在 JavaScript 循环中显示地图标记的 JSON 解析数据
show JSON parsed data in javascript loop for maps markers
我正在尝试获取经度和纬度标记并在地图上显示它们,但我没有得到任何结果,我的解析器.php文件正在工作并从数据库中获取数据我只需要将其格式化为 JavaScript
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: { lat: -25.363882, lng: 131.044922},
zoom: 14
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
$.getJSON('parser.php', function(items) {
for (var i = 0; i < items.length; i++) {
(function(item) {
addMarker(item.lat, item.lon);
})(items[i]);
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
解析器.php输出
[{"0":"33.880561","lat":"33.880561","1":"35.542831","lon":"35.542831"},{"0":"-25.363882","lat":"25.363882","1":"131.044922","lon":"131.044922"}]
你的问题是你的PHP中的纬度值和lon值是字符串。 我假设(因为您的问题在此阶段不包括它)您的addMarker
函数没有将这些字符串转换为谷歌地图期望的纬度/液化值的数字对象。
在将它们传递给地图 API 之前,尝试简单地将它们包装在 parseFloat()
中,例如
addMarker(parseFloat(item.lat), parseFloat(item.lon));
或者,您可以在 addMarker 函数本身中执行此操作(这可能更好)。
您需要将标记添加到地图中。按照代码当前结构化的方式,映射是初始化函数的本地映射,无法将该值传递给 addMarker 函数。
您有两种选择:
- 将 "map" 变量传递给 addMarker 函数
function initialize() {
var mapOptions = {
center: {
lat: -25.363882,
lng: 131.044922
},
zoom: 14
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
$.getJSON('parser.php', function (items) {
for (var i = 0; i < items.length; i++) {
(function (item) {
addMarker(item.lat, item.lon, map);
})(items[i]);
}
});
}
概念验证小提琴
工作代码片段:
function initialize() {
var mapOptions = {
center: {
lat: -25.363882,
lng: 131.044922
},
zoom: 14
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
// $.getJSON('parser.php', function (items) {
var items = [{
"0": "33.880561",
"lat": "33.880561",
"1": "35.542831",
"lon": "35.542831"
}, {
"0": "-25.363882",
"lat": "25.363882",
"1": "131.044922",
"lon": "131.044922"
}];
for (var i = 0; i < items.length; i++) {
(function(item) {
addMarker(item.lat, item.lon, map);
})(items[i]);
}
// });
}
var bounds = new google.maps.LatLngBounds();
function addMarker(lat, lng, map) {
var latlng = new google.maps.LatLng(lat, lng);
bounds.extend(latlng);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
map.fitBounds(bounds);
return marker;
}
google.maps.event.addDomListener(window, 'load', initialize);
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map-canvas" style="width:750px; height:450px; border: 2px solid #3872ac;"></div>
- 使"map"变量全局化。
var map; // global variable, outside of any function definition
function initialize() {
var mapOptions = {
center: {
lat: -25.363882,
lng: 131.044922
},
zoom: 14
};
// initialize the global variable (no "var")
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
$.getJSON('parser.php', function (items) {
for (var i = 0; i < items.length; i++) {
(function (item) {
addMarker(item.lat, item.lon);
})(items[i]);
}
});
}
工作代码片段:
var map;
function initialize() {
var mapOptions = {
center: {
lat: -25.363882,
lng: 131.044922
},
zoom: 14
};
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
// $.getJSON('parser.php', function (items) {
var items = [{
"0": "33.880561",
"lat": "33.880561",
"1": "35.542831",
"lon": "35.542831"
}, {
"0": "-25.363882",
"lat": "25.363882",
"1": "131.044922",
"lon": "131.044922"
}];
for (var i = 0; i < items.length; i++) {
(function(item) {
addMarker(item.lat, item.lon);
})(items[i]);
}
// });
}
var bounds = new google.maps.LatLngBounds();
function addMarker(lat, lng) {
var latlng = new google.maps.LatLng(lat, lng);
bounds.extend(latlng);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
map.fitBounds(bounds);
return marker;
}
google.maps.event.addDomListener(window, 'load', initialize);
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map-canvas" style="width:750px; height:450px; border: 2px solid #3872ac;"></div>
相关文章:
- 如何将JSON数据导入我的ejs模板
- 如何将json数据显示为html
- Json数据包含日期和时间格式
- 用我的json数据填充JQuery DataTable
- AngularJS加载JSON数据,然后从中解析/加载HTML
- 使用jquery读取Json数据
- 如何将本地json数据加载到Extjs数据模型中
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- React-将jSON数据传递给子组件的子组件
- 尝试从控制器加载带有json数据的Simile时间线
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 如何通过数据分组将json数据转换为嵌套的json数据格式
- 如何在ReactJs中显示Json数据
- 使用javascript进行JSON数据检索
- tu如何将id放在填充了json数据的html表td上
- 将JSON数据从服务器加载到knockout.jsobservable中
- 使用JavaScript处理JSON数据
- 如何将json数据传递到.js文件
- 如何在带有nunjucks和gullow数据的JSON数据中使用带有HTML的内容
- 如何使用var名称调用JSON数据