Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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 单击其他标记时自动关闭信息窗口Google Maps API_Javascript_Codeigniter_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 单击其他标记时自动关闭信息窗口Google Maps API

Javascript 单击其他标记时自动关闭信息窗口Google Maps API,javascript,codeigniter,google-maps,google-maps-api-3,Javascript,Codeigniter,Google Maps,Google Maps Api 3,我的谷歌地图API v3脚本有问题。我正在使用CodeIgniter框架。 问题是,当我单击一个标记,然后单击另一个标记时,InfoWindow Google Maps on previous标记没有关闭。这是我的代码: <script type="text/javascript"> var peta; var gambar_kantor = new Array(); var nama = new Array(); var ka

我的谷歌地图API v3脚本有问题。我正在使用CodeIgniter框架。 问题是,当我单击一个标记,然后单击另一个标记时,InfoWindow Google Maps on previous标记没有关闭。这是我的代码:

<script type="text/javascript">
      var peta;
      var gambar_kantor = new Array();
      var nama     = new Array();
      var kategori = new Array();
      var alamat   = new Array();
      var telpon   = new Array();
      var x        = new Array();
      var y        = new Array();
      var i;
      var url;
      var gambar_marker;
      var gambar_kantor;
      var baseurl  = "<?php echo base_url() ?>";

      function map_init() {
          var map = new google.maps.LatLng(-6.990411, 110.422542);


          var myStyles =[
          {
              featureType: "poi",
              elementType: "labels",
              stylers: [
                    { visibility: "off" }
              ]
          }
          ];

          var petaoption = {
              zoom: 12,
              center: map,
              mapTypeId: google.maps.MapTypeId.ROADMAP,
              styles: myStyles 
              };

          peta = new google.maps.Map(document.getElementById("map_canvas"),petaoption);


          getdatabase();
      }

      function getdatabase(){
          var markers = [];
          var info= [];


          <?php
        $query = $this->db->query("SELECT l.id, l.nama, l.gambar, l.alamat, l.telp, l.latittude, l.longitude, k.nama_kategori, k.ikon
                                    FROM lokasi as l, kategori as k
                                    WHERE l.kategori=k.id");
          $i = 0;
          $js = "";

          foreach ($query->result() as $value) {

          $js .= 'nama['.$i.'] = "'.$value->nama.'";
                  alamat['.$i.'] = "'.$value->alamat.'";
                  telpon['.$i.'] = "'.$value->telp.'";
                  x['.$i.'] = "'.$value->latittude.'";
                  y['.$i.'] = "'.$value->longitude.'";
                  set_icon("'.$value->ikon.'");

                  var point = new google.maps.LatLng(parseFloat(x['.$i.']),parseFloat(y['.$i.']));

                  var contentString = "<table>"+
                                              "<tr>"+
                                                  "<td align=center><br><b>" + nama['.$i.'] + "</b></td>"+
                                              "</tr>"+
                                              "<tr>"+
                                                  "<td align=center width=300px>" + alamat['.$i.'] + "</td>"+
                                              "</tr>"+
                                              "<tr>"+
                                                  "<td align=center> Telp: " + telpon['.$i.'] + "</td>"+
                                              "</tr>"+
                                          "</table>";

                  var currentInfoWindow = null;

                  var infowindow = new google.maps.InfoWindow({
                      content: contentString

                  });


                  var marker = new google.maps.Marker({
                          position: point,
                          map: peta,
                          icon: gambar_marker,
                          clickable: true
                      });


                  markers.push(marker);
                  info.push(infowindow);


                  google.maps.event.addListener(markers['.$i.'], "click", function() {
                    info['.$i.'].open(peta,markers['.$i.']); 
                  });
               ';
            $i++;   
      }

      // echo JS
      echo $js;
      ?>
  }

var-peta;
var gambar_kantor=新数组();
var nama=新数组();
var kategori=新数组();
var alamat=新数组();
var telpon=新数组();
var x=新数组();
var y=新数组();
var i;
var-url;
var-gambar_标记;
var gambar_kantor;
var baseurl=“”;
函数映射_init(){
var map=new google.maps.LatLng(-6.99041110.422542);
我的风格=[
{
特征类型:“poi”,
elementType:“标签”,
样式:[
{可见性:“关闭”}
]
}
];
变量选项={
缩放:12,
中心:地图,
mapTypeId:google.maps.mapTypeId.ROADMAP,
风格:myStyles
};
peta=new google.maps.Map(document.getElementById(“Map_canvas”),peta选项);
getdatabase();
}
函数getdatabase(){
var标记=[];
var信息=[];

您可以在循环之外声明一个infowindow,然后单击每个标记会打开自己的infowindow,并用适当的内容填充它

在下面的示例中,我在标记本身上设置了
contentString
属性

var infowindow = new google.maps.InfoWindow();

<?php
foreach ($query->result() as $value) {
....
?>


    var marker = new google.maps.Marker({
                   position: point,
                   map: peta,
                   icon: gambar_marker,
                   clickable: true,
                   content: contentString
                 });


    markers.push(marker);

    google.maps.event.addListener(marker, "click", function() {
        infowindow.setContent(marker.content);
        infowindow.open(peta,marker); 
    });

<?php
  }
?>
var infowindow=new google.maps.infowindow();
var marker=new google.maps.marker({
位置:点,,
地图:善待动物组织,
图标:甘巴鲁标记,
可点击:正确,
内容:contentString
});
标记器。推(标记器);
google.maps.event.addListener(标记“单击”,函数(){
infowindow.setContent(marker.content);
信息窗口。打开(善待动物组织,标记);
});

您可以在循环之外只声明一个信息窗口。然后,单击每个标记时,会打开该信息窗口本身,并用适当的内容填充它

在下面的示例中,我在标记本身上设置了
contentString
属性

var infowindow = new google.maps.InfoWindow();

<?php
foreach ($query->result() as $value) {
....
?>


    var marker = new google.maps.Marker({
                   position: point,
                   map: peta,
                   icon: gambar_marker,
                   clickable: true,
                   content: contentString
                 });


    markers.push(marker);

    google.maps.event.addListener(marker, "click", function() {
        infowindow.setContent(marker.content);
        infowindow.open(peta,marker); 
    });

<?php
  }
?>
var infowindow=new google.maps.infowindow();
var marker=new google.maps.marker({
位置:点,,
地图:善待动物组织,
图标:甘巴鲁标记,
可点击:正确,
内容:contentString
});
标记器。推(标记器);
google.maps.event.addListener(标记“单击”,函数(){
infowindow.setContent(marker.content);
信息窗口。打开(善待动物组织,标记);
});

也许这个链接对你有用

先前答复:

确保在JS中的google maps主代码之外声明全局变量:

文件:var lastOpenedInfoWindow;


祝你好运!

也许这个链接对你有用

先前答复:

确保在JS中的google maps主代码之外声明全局变量:

文件:var lastOpenedInfoWindow;


祝你好运!

Hello@amenadiel谢谢你的回复,我已经按照你的指示操作了。但是信息窗口可以在一个标记上单击,当我单击另一个标记时,它不会显示信息窗口。Hello@amenadiel谢谢你的回复,我已经按照你的指示操作了。但是当我单击另一个标记时,信息窗口可以在标记上单击不显示信息窗口。如果您在堆栈网络中遇到适合该问题的答案,最好在此处将此问题标记/关闭为重复,只需抬头:)如果您在堆栈网络中遇到适合该问题的答案,最好在此处将此问题标记/关闭为重复e、 只是提醒一下:)