gpt4 book ai didi

javascript - 如何从 json 文件加载多个标记?

转载 作者:行者123 更新时间:2023-11-27 23:53:59 26 4
gpt4 key购买 nike

我正在开发一个jquery移动 map 应用程序,我有map.html、map.js和map.json文件,如下所示

function initialize() {
var latitude = 57.95,
longitude = 14.65,
radius = 8000, //how is this set up
center = new google.maps.LatLng(latitude,longitude),
bounds = new google.maps.Circle({center: center, radius: radius}).getBounds(),
mapOptions = {
center: center,
zoom: 9,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false
};

var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);

setMarkers(center, radius, map);
}

function setMarkers(center, radius, map) {
var json = (function () {
var json = null;
$.ajax({
'async': false,
'global': false,
'url': "./map.json",
'dataType': "json",
'success': function (data) {
json = data;
}
});
return json;
})();

var circle = new google.maps.Circle({
strokeColor: '#000000',
strokeOpacity: 0.25,
strokeWeight: 1.0,
fillColor: '#ffffff',
fillOpacity: 0.1,
clickable: false,
map: map,
center: center,
radius: radius
});
var bounds = circle.getBounds();

//loop between each of the json elements
for (var i = 0, length = json.length; i < length; i++) {
var data = json[i],
latLng = new google.maps.LatLng(data.lat, data.lng);



if(bounds.contains(latLng)) {
// Creating a marker and putting it on the map
var marker = new google.maps.Marker({
position: latLng,
map: map,
title: data.content
});
infoBox(map, marker, data);
}
}

circle.bindTo('center', marker, 'position');
}

function infoBox(map, marker, data) {
var infoWindow = new google.maps.InfoWindow();
// Attaching a click event to the current marker
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent(data.content);
infoWindow.open(map, marker);
});

// Creating a closure to retain the correct data
// Note how I pass the current data in the loop into the closure (marker, data)
(function(marker, data) {
// Attaching a click event to the current marker
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent(data.content);
infoWindow.open(map, marker);
});
})(marker, data);
}

google.maps.event.addDomListener(window, 'load', initialize);
[{ 
"lat": 57.95,
"lng": 14.65,
"content":"test content1"
},
{
"lat": 57.9,
"lng": 14.6,
"content":"test content2"
},
{
"lat": 57.85,
"lng": 14.55,
"content":"test content3"
}]
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map-canvas { height: 100% }
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.1.1.min.js"></script>
</script>
<script src="./map.js"></script>
</head>
<body>
<div id="map-canvas"/>
</body>
</html>

但是在我的代码中没有看到标记....当我尝试在没有任何外部 .js 和 .json 文件的情况下运行单个 html 文件时,它可以工作,但使用此代码我无法运行..

我需要知道哪里出了问题,并且还需要以下方面的帮助:1.在 map 上显示多个标记2. 单击标记后,它应该在内容标记中显示消息

等待帮助...提前致谢...

最佳答案

该示例没有任何问题,很可能是您收到此错误的原因,因为您尝试直接从浏览器打开 html 页面(因此通过文件协议(protocol)加载 map.json )。

基本上有两个选项可用:

选项 1

您可以安装网络服务器并在 localhost 上访问您的页面,或者将 map.json 上传到网络上的某个位置并将 url 更改为 http://example.com/map.json

选项 2

允许浏览器访问本地文件,例如在 Chrome 中,您可以指定 allow-file-access-from-files 标志,例如:

> .\chrome.exe --allow-file-access-from-files

关于javascript - 如何从 json 文件加载多个标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32433039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com