Html 马克赢了';我的谷歌硬盘坐标无法在GMAP上显示
我在谷歌硬盘上有一个电子表格,上面有全球各个城市的“名称”、“Lat”、“Lng”和“Pop”。我使用以下脚本创建了一个DoGet函数:Html 马克赢了';我的谷歌硬盘坐标无法在GMAP上显示,html,google-maps,google-drive-api,Html,Google Maps,Google Drive Api,我在谷歌硬盘上有一个电子表格,上面有全球各个城市的“名称”、“Lat”、“Lng”和“Pop”。我使用以下脚本创建了一个DoGet函数: var SPREADSHEET_ID = '0ArgTJt0LQs91dFNXNnk1ZXVjTlE0SmE1MVFpTE5GQUE'; var SHEET_NAME = 'Data'; function doGet(request) { var range = SpreadsheetApp.openById(SPREADSHEET_ID).getS
var SPREADSHEET_ID = '0ArgTJt0LQs91dFNXNnk1ZXVjTlE0SmE1MVFpTE5GQUE';
var SHEET_NAME = 'Data';
function doGet(request) {
var range = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME).getDataRange();
var values = range.getValues();
var cities = [];
for (var i = 1; i < values.length; i++)
{
var city = {
name: values[i][0],
latlng: [values[i][1], values[i][2]],
population: values[i][3]
};
cities.push(city);
}
var json = Utilities.jsonStringify(cities);
if (request && request.parameters) {
var callback = request.parameters.jsonp;
if (callback) {
json = callback + '(' + json + ')';
}
}
return ContentService.createTextOutput(json).setMimeType(ContentService.MimeType.JSON);
}
var电子表格_ID='0ArgTJt0LQs91dFNXNnk1ZXVjTlE0SmE1MVFpTE5GQUE';
var表_名称='数据';
函数doGet(请求){
var range=SpreadsheetApp.openById(电子表格ID).getSheetByName(表格名称).getDataRange();
var values=range.getValues();
var cities=[];
对于(变量i=1;i
然后,我使用以下URL部署为web应用程序:
下面是带有我的数据服务url的脚本。只有地图会显示,没有标记
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>My Awesome Map</title>
<style>
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
#map_canvas {
width: 100%;
height: 100%;
}
</style>
<script src="https://maps.google.com/maps/api/js?sensor=false"></script>
<script>
var DATA_SERVICE_URL = "https://script.google.com/macros/s/AKfycbwZyZI0saAdAruEYtvKDb0r1WofVfVzi7XIi6YQzq0s4BJqhnDZ/exec?jsonp=callback";
var map;
function initialize() {
map = new google.maps.Map(document.getElementById('map_canvas'), {
center: new google.maps.LatLng(0, 0),
zoom: 2,
maxZoom: 20,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var scriptElement = document.createElement('script');
scriptElement.src = DATA_SERVICE_URL;
document.getElementsByTagName('head')[0].appendChild(scriptElement);
}
function callback(data) {
for (var i = 0; i < data.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(data[i][3], data[i][2]),
map: map
});
}
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas"></div>
</body>
</html>
我很棒的地图
html,正文{
保证金:0;
填充:0;
宽度:100%;
身高:100%;
}
#地图画布{
宽度:100%;
身高:100%;
}
var数据\服务\ URL=”https://script.google.com/macros/s/AKfycbwZyZI0saAdAruEYtvKDb0r1WofVfVzi7XIi6YQzq0s4BJqhnDZ/exec?jsonp=callback";
var映射;
函数初始化(){
map=new google.maps.map(document.getElementById('map_canvas'){
中心:新google.maps.LatLng(0,0),
缩放:2,
maxZoom:20,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var scriptElement=document.createElement('script');
scriptElement.src=数据\服务\ URL;
document.getElementsByTagName('head')[0].appendChild(scriptElement);
}
函数回调(数据){
对于(变量i=0;i
数组索引以0开头,创建标记位置时使用了错误的项
这对我很有用:
function callback(data) {
//note: i is set to 1, because the first row contains the column-names
for (var i = 1; i < data.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(data[i][1], data[i][2]),
title:data[i][0],
map: map
});
}
}
函数回调(数据){
//注意:i设置为1,因为第一行包含列名
对于(变量i=1;i
感谢您的快速反应,但在应用更改后,它仍然不起作用。您提供的脚本的Mime类型错误(必须是JAVASCRIPT而不是JSON),大多数浏览器在提供错误的Mime类型时都不会执行脚本。我在Chrome和IE中尝试了JSON Mime类型。我使用的教程说它必须是JSON@2:38,我如何才能使它工作或将其更改为Java,这样它将自动显示我在Gdrive中输入的坐标的标记?教程不正确,MIME类型必须是text/javascript
。例如,在chrome中会出现以下错误:拒绝从[script url]执行脚本,因为其MIME类型(“应用程序/json”)不可执行,并且启用了严格的MIME类型检查。要发送正确的MIME类型,请使用.setMimeType(ContentService.MimeType.JAVASCRIPT)
Demo和正确的MIME类型:注意:不要在脚本中使用演示中的脚本URL,它是我自己的宏,不会反映电子表格中的更改。