在打开另一个信息窗口之前关闭信息窗口

2023-11-29

我的信息窗口有问题。我有一个通过 JSON 检索数据的 ajax 函数,但是当您打开另一个时,我无法自动关闭 InfoWindow。 我的代码是这样的:

var mapOptions = {
    center: new google.maps.LatLng(44.49423583832911, 11.346244544982937),
    zoom: 13,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("mappa_locali"),mapOptions);
$.ajax({
    type:'GET',
    url:"locali_json.php"+urlz,
    success:function(data){ 
          var json = JSON.parse(data);
          for (var i=0; i<json.length; i++) {
             point = new google.maps.LatLng(json[i].latitudine,json[i].longitudine);
             var infowindow = new google.maps.InfoWindow;
             infowindow.setContent('<a href="./dettaglioLocale.php?id_loc='+json[i].id_locale+'">'+json[i].nome_locale+'</a><br>'+json[i].address);
             addMarkerz(point,infowindow);
          }
    }
})
 }


   function addMarkerz(point,infowindow) { 
    position: point,
    map: map
   });
    google.maps.event.addListener(marker,'mouseover',infoCallback(infowindow, marker));
    markers.push(marker);
    infos.push(infowindow);
     }

    function infoCallback(infowindow, marker) { 
      return function() {
         infowindow.close();  
        infowindow.open(map, marker);

      };
    }

有谁知道哪里减少了错误?或者你对我有什么建议吗?


建议仅创建一个信息窗口(在全局范围内),重用它并在单击标记时更改其内容,如果用户单击地图则关闭它。

代码片段(删除对 AJAX 调用的依赖):

// global variables
var map;
var markers = [];
var infowindow = new google.maps.InfoWindow();

function initialize() {
  var mapOptions = {
    center: new google.maps.LatLng(44.49423583832911, 11.346244544982937),
    zoom: 13,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  map = new google.maps.Map(document.getElementById("mappa_locali"), mapOptions);
  var json = JSON.parse(data);
  for (var i = 0; i < json.length; i++) {
    point = new google.maps.LatLng(json[i].latitudine, json[i].longitudine);
    var infowindowHtml = '<a href="./dettaglioLocale.php?id_loc=' + json[i].id_locale + '">' + json[i].nome_locale + '</a><br>' + json[i].address;
    addMarkerz(point, infowindowHtml);
  }
}

function addMarkerz(point, infowindowHtml) {
  var marker = new google.maps.Marker({
    position: point,
    map: map
  });
  google.maps.event.addListener(marker, 'mouseover', infoCallback(infowindowHtml, marker));
  markers.push(marker);
}

function infoCallback(infowindowHtml, marker) {
  return function() {
    infowindow.close();
    // update the content of the infowindow before opening it
    infowindow.setContent(infowindowHtml)
    infowindow.open(map, marker);

  };
}


var data = JSON.stringify([{
  latitudine: 44.494887,
  longitudine: 11.3426163,
  id_locale: "0",
  nome_locale: "Bologna",
  address: "Bologna, Italy"
}, {
  latitudine: 44.4946615,
  longitudine: 11.314634999999953,
  id_locale: "0",
  nome_locale: "Quartiere Saragozza",
  address: "Quartiere Saragozza, Bologna, Italy"
}]);


google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#mappa_locali {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="mappa_locali"></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在打开另一个信息窗口之前关闭信息窗口 的相关文章

  • 谷歌地理编码 API 不如使用地址的谷歌地图准确

    我有很多例子 其中谷歌地图返回确切的位置 而地理编码无法找到精确的匹配 并且仅提供紧密匹配的纬度 经度 这对我的目的没有好处 例如 谷歌地图中的 1729 State Road 8 auburn IN 46706 将我精确地定位到了沃尔玛配
  • 通过 AJAX 加载 Google Maps API,控制台错误

    我正在使用 jquery javascript ajax 和 php 构建一个完全动态的网站 当我单击导航链接时 浏览器会使用 ajax 打开该页面 所以基本上所有页面都加载在同一个index php 中 如果我转到 位置 选项卡 其中有谷
  • Google Maps API V3 关闭信息框

    我有一个 Google 地图版本 3 但我无法完全按照我想要的方式工作 当地图打开时 页面上有几个标记 单击或悬停在标记上会打开一个带有酒店名称的小信息框 单击另一个标记将关闭第一个信息框并在新标记上打开一个新信息框 问题在于关闭最后一个信
  • Google 放置 API:从 CID 到参考?

    我的目标 用已知的商业地点填充数据库 以便生成包含这些地点的地图 我坚持使用 已知地点 因为我的用户只会搜索数据库中的地点 我不想在地图上重新创建商业地点作为标记 因此纬度和经度不足以识别地点 因为这些地点已经在 Google 地图上提供了
  • Google 地图 api 中的 infoWindow 数组

    我寻找错误 但找不到它 由于某种原因 任何谷歌地图信息窗口总是显示相同的信息 这是一个咖啡脚本代码 infowindow new google maps InfoWindow for company in companiesData mar
  • Google Map v3 地图加载事件[重复]

    这个问题在这里已经有答案了 是否有任何侦听器来处理完全加载的地图 就我而言 我需要从地图获取边界 所以我这样做了 google maps event addListener this map bounds changed this mapL
  • 在 Google Map API V3 中隐藏信息窗口上的阴影

    我想隐藏 Google Map API V3 中 infowindow 上的阴影 我尝试访问 Floatshadow 窗格 但我不知道该怎么做
  • 地图路由,像谷歌地图一样吗?

    我一直对地图路由很感兴趣 但我从未找到任何好的入门 甚至高级 级别的教程 有人有任何指示 提示等吗 Update 我主要寻找有关如何实现地图系统 数据结构 算法等 的指导 看看开放街道地图项目 http www openstreetmap
  • Google 地图 API:忽略 DirectionService 请求中的季节性限制

    我目前正在开发一张地图 其中显示两点之间的最短路线 使用不同的交通工具 我注意到 有时 例如在冬季关闭的道路不会被考虑在内 我发现我可以使用方向服务 下面的代码 忽略高速公路 收费站和渡轮 但我一生都无法弄清楚如何 是否可以忽略季节性限制
  • 从 DirectionsRenderer 中获取折线或标记的事件

    我正在使用 DirectionsService 和路线方法来生成 DirectionsResult 我还使用 DirectionsRenderer 对象来显示结果 因为它非常易于使用 我在检测 Directions changed 事件时没
  • 谷歌地图 API 没有密钥?

    如何在没有密钥的情况下使用 Google Maps v3 API 我在里面见过这个例子 http www birdtheme org useful v3largemap html但无法弄清楚具体是什么导致它不出错 编辑 如果有人建议 Sta
  • Google 地图 - 使用自定义 json 样式*和* 地形视图

    因此 我创建了一些自定义 JSON 以使海洋更加饱和的蓝色 但现在似乎无法将地图默认为地形视图 它只是转到标准路线图视图 似乎无法弄清楚为什么会这样正在发生 有什么想法吗 function initialize Create an arra
  • Selenium webdriver 中的鼠标悬停事件

    我无法从菜单中显示子菜单 我尝试了以下方法 1 我尝试了鼠标悬停操作 显而易见的一个 2 我尝试了javascript执行器 问题是 HTML 组件仅在鼠标悬停时加载 因此无法设置 html 中不存在的元素的属性 我正在使用javahttp
  • getpaths() 多边形 谷歌地图 API

    我正在尝试检索折线和多边形的纬度坐标 完成任一对象的绘制后 我想将经纬度存储在数据库中 但现在我只是尝试在文本区域中显示经纬度 我已经很容易地完成了标记 矩形和圆形的操作 但是折线和多边形的术语让我感到困惑 当我完成绘图时 我使用 addD
  • 谷歌地图路线生成与航点

    我有一个现有的应用程序 可以跟踪车辆并在地图上渲染其折线 并且我希望能够使用路由服务将这些折线导入到另一个应用程序中 以便导入的折线捕捉到道路并可以拖动 ETC 我目前正在做的是编码 var encoded path google maps
  • 如何使谷歌地图可拖动并保持标记在屏幕中央?

    我有一个按钮可以启用 禁用地图的可拖动选项 当用户拖动地图时 我需要将标记保留在地图的中心 var map function toggleMapDraggable if map get draggable map set draggable
  • “google.maps.event.addDomListener(窗口,'加载',初始化);”是什么意思意思是? [复制]

    这个问题在这里已经有答案了 这是什么意思 google maps event addDomListener window load initialize 我有函数 initialize 但我还添加了两个参数 经度和纬度 所以它是这样的 fu
  • 删除所有标记谷歌地图v3

    在我的第一次点击事件中 所有标记都显示在谷歌地图中 我想在第二次点击中删除它们 当我执行代码时 仅删除最后一个标记 这是我的 JavaScript 代码 var showmarkers false google maps event add
  • Angular 5 - 谷歌未定义(谷歌地图)

    我想在我的 Angular 5 应用程序上使用谷歌地图 但遇到了一些问题 加载视图时 我在 js 控制台中收到错误 LoginComponent Host ngfactory js sm 1 ERROR ReferenceError goo
  • 通过 HTTPS 的 Google 地图 API v3?

    谷歌地图 API v3 是否有 https 版本 我有一个使用 https 的网站 并且在 IE 中遇到烦人的混合安全和非安全内容错误 我在 v2 中读到你必须付费才能获得此内容 但在 v3 中没有看到任何内容 昨天 Google 宣布网站

随机推荐

  • 使用 ifileoperation copyitem 时提升 uac

    我使用下面的代码在 Windows 7 中进行文件复制操作 但它不起作用 并且在运行或调试时没有任何错误 当应用程序调用 CoGetObject 时 它会崩溃并且无法返回任何 Hresult错误 我只知道错误发生在这一行 gt result
  • 我们可以有一个按名称参数的函数数组吗?

    在 Scala 中 我们有一个按名称参数 我们可以在其中编写 def foo T f gt T T f invokes f use as foo println hello 我现在想对一系列方法执行相同的操作 即我想将它们用作 def fo
  • Haskell 新手将列表分成两半的问题

    这是我尝试编写一个函数 将偶数长度的列表分成相等的两半 halve a gt a a halve x even len take half x drop half x otherwise error Cannnot halve a list
  • Android Fragment Tab Host + ViewPager 滑动?

    我目前有一个由本教程制作的片段选项卡主机http maxalley wordpress com 2013 05 18 android creating a tab layout with fragmenttabhost and fragme
  • ComponentDidMount 被调用多次

    我构建了一个 HOC 以在我的应用程序中的受保护路由上使用 它接收应在路由上呈现的组件 检查用户是否经过身份验证 然后呈现该组件 如果是 它可以工作 但它会导致组件多次挂载 卸载 与调用我的 app js 文件中的渲染函数的次数一样多 来自
  • 聚类数量未知的无监督聚类

    我有一大组 3 维向量 我需要根据欧几里德距离对它们进行聚类 以便任何特定聚类中的所有向量彼此之间的欧几里德距离小于阈值 T 我不知道有多少个集群 最后 可能存在不属于任何簇的单独向量 因为其与空间中任何向量的欧几里德距离不小于 T 这里应
  • FtpWebRequest 类文件上传时出现 550 文件不可用错误。在 FileZilla 中运行良好

    我进行了搜索并发现了与此相关的其他问题 但没有一个解决了我的问题 我正在尝试使用示例 MSDN 代码通过 FTP 上传文件 我在这一行收到 远程服务器返回错误 550 文件不可用 例如 文件未找到 无法访问 错误 ftpstream Clo
  • C 类型的取值范围

    C 标准中写道 即int应该有 最小值 32767 最大值 32767 但在实现中 即在 16 位机器上 该值是 最小值 32768 最大值 32767 为什么会有负值差异 两个范围都有效 什么是unusual是第一个 32767 3276
  • Elasticsearch 对数组索引的查询

    如何在elasticsearch中按数组的索引查询 过滤 我有一个这样的文件 PUT edi832 record 1 LIN UP 123456789 我想搜索 LIN 0 是否为 UP 并且 LIN 1 是否存在 Thanks 这可能看起
  • 仅当树项的父项是列表中的第一个项时,WPF 才将命令标记为不可用的方法是什么?

    我有一个代表某些项目的树视图 这棵树总是两层深 子项的右键菜单有一个 上移 命令 UI 允许您向上移动子项目 即使它是其父项目的第一个项目 只要父级别上有另一个项目 位于所选项目的父项目之上 执行此操作的明显方法是获取所选项目的父级并查看其
  • 生成已扩展模板的 C++ 代码

    我想知道是否有一种方法可以使用 C 编译器来生成 C 代码 其中所有模板都已扩展为程序所需的实例化 该代码必须存在于编译过程中的某个时刻 尽管默认情况下可能不是 ASCII 形式 但在我看来 将其转换回可读的 C 代码应该不会太困难 EDI
  • Perl解析文件内容

    我正在尝试解析由 3 个类别组成的文本文件内容并在主代码中访问它 我知道哈希可能是一个好方法 但由于输入文件中没有唯一的列 名称可能重复或不同 我怀疑是否还有其他方法可以做到这一点 感谢任何回复 usr bin perl use stric
  • Google Maps API V3 构建包含多个邮政编码的多边形

    我必须允许用户输入多个邮政编码 从数据库中检索纬度和经度 然后构建一个包含它们的巨大多边形 I m coding in Java and using Google Maps API V3 I have no problem doing a
  • 使用正则表达式替换大括号中的标签,甚至嵌套标签

    Example preg replace a zA Z 0 9 Replaced Lorem ipsum dolor sit tag1 tag2 consectetur adipiscing elit 结果 Lorem ipsum dolo
  • 在不同网络上使用套接字通信

    大家好 stackoverflowers 我目前正在开发这个应用程序 它应该能够在设备之间进行通信 我发现this关于如何使用 Socket 进行此类通信的很酷的指南 它成功了 ish 我的问题是它仅在两个设备连接到同一 Wi Fi 时才有
  • 将 CSS 类添加到 RMarkdown 中的单个代码块

    是否可以将 CSS 类添加到特定的代码块中 假设有以下文件 title Untitled output html document r cars summary cars 我想给标记为 汽车 的块指定一个 CSS 类 例如 myClass
  • 单击时如何更改按钮颜色

    我是新的 css 单击时很难更改按钮的颜色 通常 当单击按钮时 按钮颜色会在很短的时间内变成蓝色 我希望它是黄色的 我怎样才能做到这一点 html
  • 通过 AS3 设置组合框文本格式

    我正在开发一个 AIR 应用程序 我需要更改下拉列表中显示的文本以及组合框中的主要文本的字体大小 我的组合框很大 但其中显示的文本很小 我尝试使用 setStyle 方法 将 TextFormat 传递给它 如下所示 cmbEmployee
  • 我可以对包含的外部 javascript 文件使用 301 重定向吗?

    我正在尝试清理网站上的一些文件 其中一项任务是将所有对 jquery 的引用整理到一个文件中 是的 这是一个拥有多个开发人员的大型网站 并且没有遵循一些标准 导致目前引用了各种版本的 jquery 的情况 我尝试做的是为这些文件创建 301
  • 在打开另一个信息窗口之前关闭信息窗口

    我的信息窗口有问题 我有一个通过 JSON 检索数据的 ajax 函数 但是当您打开另一个时 我无法自动关闭 InfoWindow 我的代码是这样的 var mapOptions center new google maps LatLng