Googlemaps&Charts.js在Infowindow(html&js)中显示图表

时间:2018-11-16 09:32:48

标签: javascript html canvas

简介:

目前在学校里,我正在与Googleappengine,Googledatastore,Googlemaps和Chart.js合作进行项目。在为我的应用程序构建Basic Gui时,我遇到了一个问题,我是否需要您的帮助来理解为什么会发生这种情况,并且可能需要一些技巧来进行修复或解决。

项目:

用遍布世界各地的景点构建一个逼真的Java温度模拟器。通过http将数据发送到appengine,并将其存储在数据存储区中。构建一个网页,以显示温度图以及您在Googlemaps中使用图表存储的数据。

问题:

在第一次单击标记后加载页面后,仅加载html的画布,并且显示“ SCRIPT5007:无法获取未定义或空引用的属性'getContext' 。在标记上的第二次单击,一切正常。之后,我可以根据需要关闭并打开标记信息窗口。

网站:

http://1-dot-mm-gae-ntb.appspot.com/Temperaturemap.html

代码:

function initMap() {
	 var uluru = {lat: -25.363, lng: 131.044};
	  var map = new google.maps.Map(document.getElementById('map'), {
	    zoom: 4,
	    center: uluru
	  });

	  var marker = new google.maps.Marker({
		    position: uluru,
		    map: map,
		    title: 'Uluru (Ayers Rock)'
		  });
	  
	  var infowindow = new google.maps.InfoWindow({
		  content: '<canvas id="myChart" width="400" height="400"></canvas>'
	  });

	  
	  marker.addListener('click', function() {
	    infowindow.open(map, marker);
	      var ctx = document.getElementById('myChart').getContext('2d');
	      // alert (ctx);
	      
		  var myChart = new Chart(ctx, {
		    type: 'line',
		    data: {
		      labels: ['M', 'T', 'W', 'T', 'F', 'S', 'S'],
		      datasets: [{
		        label: 'hours slept',
		        data: [6.5, 5, 7, 7.5, 9, 10, 6],
		        backgroundColor: "rgba(153,255,51,0.4)",
		      }]
		    }
		  });
	  });
	 
}
html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    overflow:hidden;
}

#Banner {
    width: 100%;
    height: 14.5%;
}

#MenuButton {
    background-color: #9b9b9b;
    border: 1px solid #2b2b2b;
    color: #050505;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    cursor: pointer;
    float: left;
}

#MenuButton:hover {
    background-color: #4d8b8e;
}
#MenuButton:not(:last-child) {
    border-right: none; /* Prevent double borders */
}

#map {
    width: 100%;
    height: 80%;
}
<!DOCTYPE html>
<html>
<head>
    <title>mm.ike@ntb</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="Temperaturemap.css">
     <script src="Chart.bundle.js"></script>
    <script src="Temperaturemap.js"></script>
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDWLd8nI-RsYVKVpLmZGdrgiYjjS-T5QCc"></script>
</head>
<body onload=initMap()>
<img id="Banner" src="NTBHeader.jpg" align="center">
<div id="Menu" class="btn-group">
    <input type="button" value="Projectinfos" id="MenuButton" style="width: 25%;" onclick="window.location.href='/Projectinfos.html'">
    <input type="button" value="Temperaturemap" id="MenuButton" style="width: 50%;" onclick="window.location.href='/Temperaturemap.html'">
    <input type="button" value="Impresseum" id="MenuButton" style="width: 25%;" onclick="window.location.href='/Impresseum.html'">
</div>
<div id="map"></div>
</body>
</html>

我的观点:

我会说,markersinfowindow上的初始加载的加载速度存在问题。 Chart.js尝试将图表写入画布,甚至在markerinfowindow知道里面有一个画布的情况下。但是直到1个月前,我才真正接触过html和js,这是我第一次接触地图,appengine,图表和数据存储,所以我真的一无所知(John Snow)。

预先感谢您:

我很期待听到一些经验比我更好的人的解释。

0 个答案:

没有答案