Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我在谷歌地图API中没有标记_Javascript_Html_Google Maps_Google Maps Api 3_Google Maps Markers - Fatal编程技术网

Javascript 为什么我在谷歌地图API中没有标记

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循环,它应该呈现给定映射中的

我是HTML和JavaScript的初学者。我读了一个包含经度和纬度的文本文件。 我读取该文本文件并将其存储在3个数组中。一个包含经度,一个包含纬度,一个包含ID。 文本文件如下:(您可以将其存储起来,以便使用下面的代码进行调试)

我读了它,并将列1、2和分别存储在col1、col2、col3中

现在的问题是,下面的代码仅当我手动放置长lat时才在地图上显示标记,但当我使用my column数组时,它不会显示任何标记,而会显示地图

我想到的是在我的代码中运行这个for循环,它应该呈现给定映射中的所有标记。(是的,我确实存储了调试时可以看到的所有Long、Lat和Id)

我的代码是:

                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();