Javascript 为什么我在谷歌地图API中没有标记
我是HTML和JavaScript的初学者。我读了一个包含经度和纬度的文本文件。 我读取该文本文件并将其存储在3个数组中。一个包含经度,一个包含纬度,一个包含ID。 文本文件如下:(您可以将其存储起来,以便使用下面的代码进行调试) 我读了它,并将列1、2和分别存储在col1、col2、col3中 现在的问题是,下面的代码仅当我手动放置长lat时才在地图上显示标记,但当我使用my column数组时,它不会显示任何标记,而会显示地图 我想到的是在我的代码中运行这个for循环,它应该呈现给定映射中的所有标记。(是的,我确实存储了调试时可以看到的所有Long、Lat和Id) 我的代码是:Javascript 为什么我在谷歌地图API中没有标记,javascript,html,google-maps,google-maps-api-3,google-maps-markers,Javascript,Html,Google Maps,Google Maps Api 3,Google Maps Markers,我是HTML和JavaScript的初学者。我读了一个包含经度和纬度的文本文件。 我读取该文本文件并将其存储在3个数组中。一个包含经度,一个包含纬度,一个包含ID。 文本文件如下:(您可以将其存储起来,以便使用下面的代码进行调试) 我读了它,并将列1、2和分别存储在col1、col2、col3中 现在的问题是,下面的代码仅当我手动放置长lat时才在地图上显示标记,但当我使用my column数组时,它不会显示任何标记,而会显示地图 我想到的是在我的代码中运行这个for循环,它应该呈现给定映射中的
for (var i = 0; i <= array.length - 1; i++)
{
col1[j] = array[i];
col2[j] = array[i + 1];
col3[j] = array[i + 2];
var myLatlng = new google.maps.LatLng(col3[j], col2[j]);
var mapOptions =
{
zoom: 4,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!'
});
j++;
};
for(var i=0;i您必须创建一个标记数组
var markers[];
然后在循环中,您必须创建以在lat/long上迭代,在创建标记后,将其放入数组中:
markers.push(marker);
通过这种方式,您可以保持标记处于活动状态…您为每个标记创建了新的映射,因此您的输出仅包含带有最后一个标记的最后一个映射。请尝试移动此代码:
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
在for循环之前
顺便说一句,在你的for
循环中,你应该将迭代器增加3你的代码有很多错误
- 映射在循环中声明
- 您的拆分操作不正确
- 数组上的增量不够
i
- 在标记定义中,纬度和经度是向后的
我已经做了以下编辑,并有一把小提琴给你看,这样你就可以合并代码
函数初始化(){
var数据=
“ID经纬度\r\n”+
“0 77.139305 28.795975\r\n”+
“277.308929 28.486877\r\n”+
“473.820680 18.464110\r\n”+
“675.588783 26.599820\r\n”+
“12 77.193575 28.559693\r\n”;
var s2=data.replace(/^.*$/,“”)。replace(/\r\n/g,“”);
var数组=s2.split(/[]+/g);
var col1=[];
var col2=[];
var col3=[];
var j=0;
变量映射选项={
缩放:2,
中心:新google.maps.LatLng(73,23)
}
var map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
对于(var i=0;我认为这个可能的副本并不重要,因为它仍然可以工作,但这是一个非常非常好的主意。如果你不创建数组,你将在地图上只看到一个标记。查看我为我的答案制作的小提琴,你肯定不需要数组。没错,你不能控制的是工具提示!!太棒了!+1标题/tooltip是有效的,但我认为你是对的,如果你不在for循环中也使用infowindows和高级工具,那么使用infowindows和高级工具可能会很痛苦,这将是一种痛苦;)抱歉,无法为我工作。没有显示标记。只显示地图。您确定您的LatLong.txt文件被正确读取了吗?您能帮我将新合并的代码放到粘贴箱中吗?@harold,我在其中没有帐户。但我已经复制并粘贴了完整的代码(请参阅更新的代码)还有txt文件文本。让我来解释一下。好的,你所做的就是把地图移到for循环之外。请修复其他错误。
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
function initialize() {
var data =
"ID LONGITUDE LATITUDE\r\n" +
"0 77.139305 28.795975\r\n" +
"2 77.308929 28.486877\r\n" +
"4 73.820680 18.464110\r\n" +
"6 75.588783 26.599820\r\n" +
"12 77.193575 28.559693\r\n";
var s2 = data.replace(/^.*$/, "").replace(/\r\n/g, " ");
var array = s2.split(/[ ]+/g);
var col1 = [];
var col2 = [];
var col3 = [];
var j = 0;
var mapOptions = {
zoom: 2,
center: new google.maps.LatLng(73, 23)
}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
for (var i = 0; i <= array.length - 1; i++) {
col1[j] = array[i];
col2[j] = array[i++];
col3[j] = array[i++];
var myLatlng = new google.maps.LatLng(col3[j], col2[j]);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World! ' + col1[j]
});
j++;
}
}
initialize();