通过 JSON 创建的标记未与 Google 地图进行聚类 MarkerClusterer

2024-02-10

我无法让 Google Maps MarkerClusterer 正常工作。我相当确定我正确地遵循了程序(即创建地图,将标记添加到数组,不将标记设置到地图,然后将地图和标记附加到 MarkerClusterer),这让我相信它可能有使用 Google 地图 v3 与 v2 做某事。我只是从 json 文件创建标记,然后根据用户输入过滤标记。

快速注意:当我将地图添加到标记时,所有标记都会显示,但它们只是没有聚集。

$('document').ready(function() {

    $('#map').height($(window).height() - $('#map').position().top - 20);

    var mapElem = document.getElementById('map');

    var center = {
        lat: 47.6,
        lng: -122.3
    }

    var map = new google.maps.Map(mapElem, {
        center: center,
        zoom: 12
    });

    var infoWindow = new google.maps.InfoWindow();
    var cameras;
    var markers = [];

    $.getJSON('http://data.seattle.gov/resource/65fc-btcc.json')
        .done(function(data) {
            cameras = data;
            cameras.forEach(function(cameras) {
                var marker = new google.maps.Marker({
                    position: {
                        lat: parseFloat(cameras.location.latitude),
                        lng: parseFloat(cameras.location.longitude)
                    }
                });

                google.maps.event.addListener(marker, 'click', function() {
                    map.panTo(this.getPosition());
                    var html = '<p>' + cameras.cameralabel + '</p>';
                    html += '<img src="' + cameras.imageurl.url + '"/>';
                    infoWindow.setContent(html);
                    infoWindow.open(map, this);
                });

                google.maps.event.addListener(map, 'click', function() {
                    infoWindow.close();
                });

                markers.push(marker);

                $('#search').bind('search keyup', function() {
                    var cameraName = cameras.cameralabel.toLowerCase();
                    var searchString = this.value.toLowerCase();
                    if (cameraName.indexOf(searchString) < 0) {
                        marker.setMap(null);
                    } else {
                        marker.setMap(map);
                    }
                });
            });
        })
        .fail(function(err) {
            console.log(err);
            alert('Sorry, unfortunately something went wrong!');
        });

    var markerCluster = new MarkerClusterer(map, markers);

    $(window).resize(function() {
        $('#map').height($(window).height() - $('#map').position().top - 20);
    });

});

您需要在回调函数(创建标记数组的位置)内初始化 MarkerClusterer。

$('document').ready(function() {

    $('#map').height($(window).height() - $('#map').position().top - 20);

    var mapElem = document.getElementById('map');

    var center = {
        lat: 47.6,
        lng: -122.3
    }

    var map = new google.maps.Map(mapElem, {
        center: center,
        zoom: 12
    });

    var infoWindow = new google.maps.InfoWindow();
    var cameras;
    var markers = [];

    $.getJSON('http://data.seattle.gov/resource/65fc-btcc.json')
        .done(function(data) {
            cameras = data;
            cameras.forEach(function(cameras) {
                var marker = new google.maps.Marker({
                    position: {
                        lat: parseFloat(cameras.location.latitude),
                        lng: parseFloat(cameras.location.longitude)
                    }
                });

                google.maps.event.addListener(marker, 'click', function() {
                    map.panTo(this.getPosition());
                    var html = '<p>' + cameras.cameralabel + '</p>';
                    html += '<img src="' + cameras.imageurl.url + '"/>';
                    infoWindow.setContent(html);
                    infoWindow.open(map, this);
                });

                google.maps.event.addListener(map, 'click', function() {
                    infoWindow.close();
                });

                markers.push(marker);

                $('#search').bind('search keyup', function() {
                    var cameraName = cameras.cameralabel.toLowerCase();
                    var searchString = this.value.toLowerCase();
                    if (cameraName.indexOf(searchString) < 0) {
                        marker.setMap(null);
                    } else {
                        marker.setMap(map);
                    }
                });
            });
            // here, inside the .done function
            var markerCluster = new MarkerClusterer(map, markers);
        })
        .fail(function(err) {
            console.log(err);
            alert('Sorry, unfortunately something went wrong!');
        });

    $(window).resize(function() {
        $('#map').height($(window).height() - $('#map').position().top - 20);
    });

});

工作小提琴 http://jsfiddle.net/skfm7otw/2/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 JSON 创建的标记未与 Google 地图进行聚类 MarkerClusterer 的相关文章

  • Jasmine-jQuery loadFixtures 未定义

    我对整个茉莉花的事情仍然很陌生 在过去的几个小时里我陷入了这个问题 我尝试使用 loadFixture 加载外部夹具文件 我使用 Jasmine 2 0 0 和 Jasmine jQuery 2 0 5 ReferenceError loa
  • Javascript DOM setAttribute 在函数调用中不起作用

    我有一个带有输入元素的 HTML 文件 我希望向其中添加一个名为 valid fieldset011 的新属性 该属性用作 AngularJS 验证器的链接 输入元素具有属性 id fieldset011 如果我使用以下脚本 包含在脚本标签
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • Angular 2 Material 2 日期选择器日期格式

    我不知道如何更改材料2日期选择器的日期格式 我已阅读文档 但我不明白我实际上需要做什么 datepicker默认提供的输出日期格式为f e 6 9 2017 我想要实现的目标是将格式更改为类似的格式9 Jun 2017或任何其他 文档htt
  • window.onbeforeunload 在 Android Chrome 上不会触发 [alt.解决方案?]

    我开发了一个简单的聊天应用程序 我正在使用 window onbeforeunload当有人关闭选项卡 浏览器时 基本上是当用户离开房间时 通知其他用户 这是我的代码 scope onExit function scope chatstat
  • 如何导入和导出 javascript ES6 类

    我是 javascript 和 nodejs 的新手 我正在使用这个项目来发展我的技能并学习新技术 目前我的项目使用多个相互依赖的类 类文件位于不同的目录中 我当前正在尝试使用 export 和 require 语句来允许在其他文件中引用类
  • 以一定时间间隔连续重复运行 JavaScript 函数

    这是我的第一个问题 希望您尽快回答 我想要代码连续重复一个函数 我尝试了一些代码 但没有成功 我尝试了这段代码 我想在一段时间后重复这个功能 我努力了setInterval and setTimeout 但是 我还没有收到结果 这将重复该任
  • javascript jquery 使用脚本更改脚本的src

    我有一个 JavaScript 脚本 它有一个 src 元素 这个 src 是一个 url 我想使用 javascript 更改它 一次更改为其他内容 或者动态创建它 使用 javascript jquery 动态创建脚本元素的最佳方法是什
  • 确定元素是在页面折叠上方还是下方

    我有一些页面有多个输入框 用户可以在其中输入文本 在单击 下一步 按钮之前 需要填写其中一些内容 我弹出验证错误供用户查看 但是如果问题不在页面上 我希望页面滚动到它 而不是他们必须搜索丢失 错误的字段 我有一个滚动到位 但我无法确定要滚动
  • 将文本大小调整为矩形 在 Canvas HTML5 中调整大小

    我是 Canvas 新手 我正在创建一个网站 以在调整矩形大小时增加文本 我尝试了很多 但没有任何效果 实际上 我希望如果我仅按其宽度调整矩形大小 向左拉伸 向右拉伸 则仅应增加文本宽度而不是字体大小 我已经完成了字体大小 但发现增加孤立文
  • 使用文件 API 将资源加载到 Three.js 中

    我想创建导入 3D 模型以在浏览器中查看的功能 方法是使用File API http www html5rocks com en tutorials file dndfiles Three js 加载器在我托管的文件上运行良好 我的理解是加
  • JavaScript 测验在提出所有问题之前结束

    我现在正在学习 JavaScript 并且正在创建一个测验 我的测验运行正常 控制台中没有任何错误 但它会跳过问题 有时会在回答所有问题之前结束测验 即使给出正确答案 也会减少时间 我不太确定为什么它会这样做 因为在我看来它的编码是正确的
  • 获取点击的的DOM路径

    HTML div class lol a class rightArrow href a div 伪代码 rightArrow click function rightArrowParents this dom dom is the pse
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • Knockout.js 安全绑定

    我想使用带有淘汰赛的安全绑定 为此我使用敲除安全绑定 js https github com brianmhunt knockout secure binding 谁能解释一下为什么下面的代码不起作用 它会抛出一个错误 未捕获 淘汰 安全
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • JavaScript:测试与执行

    我想知道检查字符串 例如邮件 密码等 的最佳方法是什么 i exec a vs i test a exec返回值 test true test 1 way var mail req body mail if check mail exec
  • 强制输入数字小数位

    我想强制
  • 使用 JQuery 根据下拉列表选择的值显示/隐藏控件

    我正在尝试使用 JQuery 根据下拉菜单的选定索引显示 隐藏 div 标签 但它不起作用 任何帮助将不胜感激 Thanks
  • 无法使用 HTML 设置未定义 jQuery UI 自动完成的属性“_renderItem”

    我使用以下代码将 jQuery UI 自动完成项呈现为 HTML 这些项目在自动完成控件中正确呈现 但我不断收到此 JavaScript 错误并且无法移动过去 Firefox 无法转换 JavaScript 参数 Chrome 无法设置未定

随机推荐

  • 执行代码块一定次数

    所以我想执行一些代码N次 N 是文本框的值 例如 12 我不知道如何实现这一点 但我的脑海里浮现出这样的事情 For Each i as 1 in textbox1 text some code Next or dim num1 as in
  • asciidoc宏

    我使用 asciidoc 来渲染文本 我很难理解宏 我的目标是进行简单的宏处理 就像在 LaTeX 中一样 我想写两个宏 FOO应替换为 bar MYTEXT xyz 应替换为 This is my text xyz 也许用不同的方式传递参
  • 如何从 Android 版 Google+ API 获取当前位置?

    我需要从 Android 版 Google API 获取当前位置 我已经在 Google API 控制台中完成了所有操作 并将我的应用程序与带有 SHA1 和包名称的客户端 ID 链接起来 我成功获取了有关用户名 个人资料图片 封面图片 电
  • 如何在python3中使用ldap3绑定(验证)用户

    我正在尝试将一些代码更新为 python3 使用ldap3 http ldap3 readthedocs org en latest quicktour html版本 0 9 7 4 https pypi python org pypi l
  • 如何在android apk中保存私有字符串值?

    我知道我可以将字符串保存在 res values strings xml 中 但是如果有人反汇编 dex 文件或 apk 文件 那么他将能够看到硬编码字符串或 res values strings xml 字符串 有没有办法存储反汇编后不会
  • 有没有办法让 Eclipse 报告一般“catch (Exception e)”作为错误/警告(在 java 中)?

    我试图鼓励在 Java 代码中不捕获一般异常的最佳实践 例如 try catch Exception e bad 有没有办法在 Eclipse 中将其标记为错误 警告 我知道 PMD 会注意到这一点 但我现在宁愿避免将其集成到每个人的构建环
  • Android 按钮 KeyDown - KeyUp |不同的按钮事件

    我有一个关于开发 Android 应用程序的简单问题 问题是不同类型的按钮 例如 当我的手指放在按钮上时 音乐就会播放 但是当我的手指放在按钮上时 音乐就会停止 我怎样才能做到这一点 这可能是不同类型的按钮事件 但我不知道 我用谷歌搜索 但
  • 如何在简单的 Kivy 应用程序中将 Pandas 数据框显示为表格?

    我想构建一个简单的 Kivy 应用程序 要求用户输入一个整数 MTP 要求用户输入延迟间隔 delay 用户按下提交按钮后查询 url 然后从 该查询创建一个显示的 pandas 数据框 就像 表 在 Kivy 应用程序的主屏幕上 然后输出
  • 如何将标签中的文本与右侧对齐?

    这是我的文件标签 如果标签太长 它就会超出屏幕 从而使我不得不滚动 我已经尝试了以下属性 单独的时间 RightToLeft as Yes ContentAlignment作为右下或右上 然而 它们都不起作用 什么是正确的属性 尝试设置Au
  • NSSortDescriptor 按核心数据对多关系中的项目数量进行排序

    使用 Core Data 多关系时 这是一个长期存在的问题 很难使用以下命令对获取请求进行排序NSSortDescriptor on a Parent基于实体的数量children与 a 处于一对多关系Child实体 这在与NSFetche
  • 如何对 xml 文件中的 IBM MobileFirst SQL 适配器用户名密码 url 和端口进行哈希处理?

    我正在使用 IBM MobileFirst SQL 适配器从 AWS Oracle RDS 获取数据 为了连接到 sql 适配器 我们需要提供用户名 密码 url 和端口 连接有效 但是 我应该如何散列它以便没有人可以读取它 这是为了使其更
  • 配置字符串的 winforms 连接属性对话框

    有没有办法在运行时显示用于连接字符串浏览 针对数据库 的连接属性对话框 因为我希望用户能够使用 GUI 连接到各种数据库 与我们在 Visual Studio 连接属性对话框中获得的相同 提前致谢 寻找this http pedotnet
  • 仅获取数组 mongoose 的最后一个元素

    我的文档中有数组 我尝试接收该数组的最后一个元素 我的代码是 Post find id postId comments slice 1 这给了我所有的对象 但注释数组仅包含最后一个元素 另一方面 Post find id postId co
  • Django South:如何在迁移中访问子包中的模型

    由于我们的应用程序有很多模型 因此我们将它们放置在 models 包的子包中 即Cheddar模型不会在models Cheddar 而是在models cheese Cheddar 看来我无法在南方数据迁移中访问这些模型 即使我创建了一个
  • Jooq中有没有办法通过示例进行查询?

    I ve a PersonPojo and PersonRecord由 Jooq 生成 现在我想做这样的事情 Person p new PersonPojo p setId 10 create selectFrom Tables PERSO
  • 如果多个线程尝试访问单例对象会发生什么

    不是在实例化期间 而是在单例对象实例化完成后 如果两个或多个线程尝试访问同一个单例对象 会发生什么情况 特别是在单例对象需要花费大量时间来处理请求的情况下 比如1分钟 在这种情况下 如果例如 5个线程尝试访问同一个单例对象 结果会是什么 附
  • 如何在 3D 绘图上设置平行透视

    我在 python 中有一段代码 用于在 python 中渲染一些球体 如下所示 matplotlib inline import numpy as np import matplotlib pyplot as plt import ran
  • 在 GTK/GJS 应用程序和 Gnome Shell 扩展之间共享代码

    我正在 GJS 中开发 GTK 应用程序 并且喜欢重用 GTK 的部分内容 Gnome Shell 扩展中的代码 但是我没有找到添加的方法Gtk Widget到我的 Gnome Shell 面板图标的菜单 我尝试使用GtkClutter A
  • 如何在 Clojurescript 中捕获任何 Javascript 异常?

    在我的通信层中 我需要能够捕获任何 javascript 异常 将其记录下来并像平常一样继续进行 Clojurescript 中捕获异常的当前语法指示我需要指定所捕获的异常的类型 我尝试在 catch 形式中使用 nil js Error
  • 通过 JSON 创建的标记未与 Google 地图进行聚类 MarkerClusterer

    我无法让 Google Maps MarkerClusterer 正常工作 我相当确定我正确地遵循了程序 即创建地图 将标记添加到数组 不将标记设置到地图 然后将地图和标记附加到 MarkerClusterer 这让我相信它可能有使用 Go