Javascript 在google地图上将焦点设置为对象

Javascript 在google地图上将焦点设置为对象,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,在没有用户交互的情况下,我如何在谷歌地图上检索和创建对象。这意味着用户不点击对象。 我有10个多边形,我希望用户导航到每个多边形,操纵可能的颜色。 无需单击多边形本身 我确实有一个“下一步”按钮,当用户单击时,它会导航到下一个多边形,并将其设置为活动状态,并填充所需的颜色 多边形存储在json格式的数组中 即时通讯使用数据层。我不知道如何实施这一点。我可以单击多边形本身并更改颜色,但我需要在不单击的情况下遍历它们 谢谢 制作地图: function loadJson(url, style) {

在没有用户交互的情况下,我如何在谷歌地图上检索和创建对象。这意味着用户不点击对象。 我有10个多边形,我希望用户导航到每个多边形,操纵可能的颜色。 无需单击多边形本身

我确实有一个“下一步”按钮,当用户单击时,它会导航到下一个多边形,并将其设置为活动状态,并填充所需的颜色

多边形存储在json格式的数组中

即时通讯使用数据层。我不知道如何实施这一点。我可以单击多边形本身并更改颜色,但我需要在不单击的情况下遍历它们

谢谢

  • 制作地图:

    function loadJson(url, style)
    {
      var jsonfile = $.getJSON(url).done(function (data){
         map.data.addGeoJson(data);
         map.data.setStyle(style);
      });
    }
    
  • 变色

    map.data.addListener('click', function(event) {
    mapName.data.overrideStyle(event.feature, currentStyle);
    
    }))


在数据层中,无法访问已绘制的形状(例如多边形),只能访问特征

问题是:这些特性不能作为数组使用(这样就很容易迭代这些特性或按索引选择特性)

可能的解决办法:

  • 将多边形要素添加到图层时,将其存储在数组中(可通过
    addfeature
    -回调完成)
  • 计算多边形的边界:(请参见:)
  • 要实现“下一步”功能:

    • 使用
      map.data.revertStyle()
      重置上一个选定特征的样式
    • 选择数组中的第一个要素并应用所需样式,然后根据计算出的边界调用
      map.fitBounds()
      (步骤2)
    • 将第一个特征放在数组的末尾

      arrayWithFeatures.push(arrayWithFeatures.shift());
      

  • 演示:

    您的代码是什么样子的?你能提供一些你已经尝试过的东西吗?A最好。我不能发布整个代码,因为它很长,需要很多依赖项。我已经添加了临界线和多边形的颜色。以及工作版本的链接,以便您可以查看和更好地理解。我想要的是点击箭头,它会跳到最近的多边形。我已经计算了距离和所有东西,我只是不知道如何在不单击的情况下设置多边形的焦点。你确实是对的,我能够通过提供唯一id来导航该功能,并通过map.data.getFeaturebyId()访问它们。但我遇到了另一个问题。假设我的箭头将跳转到下一个多边形。我点击同一个多边形,试着控制日志,看看这两个多边形是否相同。功能id实际上是相同的。但它们内部的几何结构是不同的。我不明白为什么同一特征可以有两个多边形。var nextFeature=map.data.getFeatureById(currentIndex);。这条线是创建几何体的克隆体吗?如何精确比较几何体?(基本上不需要它,假设ID是唯一的,它应该足以比较ID)坐标是相同的,一切都是相同的,但我不能为使用下一个箭头的设置OverrideStyle。对我来说有点奇怪。map2.data.overrideStyle(event.feature,selectedPolygon)//这是由鼠标单击var nextFeature=map.data.getFeatureById(currentIndex)选择的;map2.data.overrideStyle(下一个特征,选定多边形);//这是一个使用下一个箭头按钮。其中两个通过按用户工作而不是按箭头单击打印出相同的特征id,即几何图形的坐标什么是currentIndex?