【问题标题】:Anonymous function error on Google Maps API marker clickGoogle Maps API 标记单击时出现匿名函数错误
【发布时间】:2018-10-18 04:17:52
【问题描述】:

使用 Foursquare Google Maps API,我的目标是使用 Foursquare 提供的场地照片属性,如果场地的元数据中存在该属性,则在 Google Maps API 信息窗口中将其与场地名称一起呈现。 如果这两个属性中只有一个可用,我只想渲染可用的一个。如果未定义场地信息或两个属性都不可用,我只想在信息窗口中显示“无可用信息”。我尝试使用具有多个条件的条件运算符来执行此操作。

对于至少一个标记,有时会显示信息,但有时会出现这些错误。

我不明白出了什么问题或如何解决它。如果'name'属性未定义,条件不应该让它回退到显示“无可用信息”吗?如果以前标记的信息显示正常,当我再次单击相同的标记时,它怎么会停止工作?

这是我在信息窗口中呈现的条件语句:

            <InfoWindow>
        {venueInfo.name && venueInfo.bestPhoto ?
          <Fragment>
            <p>{venueInfo.name}</p>
            <img src={`${venueInfo.bestPhoto.prefix}200x200${venueInfo.bestPhoto.suffix}`}
            alt={"Venue"}
            />
          </Fragment> : venueInfo.name ? <p>{venueInfo.name}</p> : venueInfo && venueInfo.bestPhoto ? <img    src={`${venueInfo.bestPhoto.prefix}200x200${venueInfo.bestPhoto.suffix}`}
          // Screen readers already announce as image; don't need the word "image", "photo", etc.
          alt={"Venue"}
        /> : <p>No info available</p>}
      </InfoWindow>

GitHub 上的full component code 供参考。

【问题讨论】:

  • venueInfo 未定义,您需要记录 props.venues.find(venue => place.id === marker.id); 的输出
  • 您的道具不包含 id 与 marker.id 匹配的场地
  • 如果以前点击相同的标记有效(地点和标记ID正确关联),它怎么会改变?

标签: javascript reactjs google-maps-api-3 foursquare


【解决方案1】:

您得到的错误是由于试图访问未定义值的属性引起的。

在您的情况下,这意味着 venueInfo 在尝试访问 venuInfo.bestPhoto 时实际上是未定义的。这会导致崩溃而不是条件运算符。

【讨论】:

  • 如果前面的条件都不满足,我有一个“其他”条件来呈现“无可用信息”。这会涵盖未定义场所信息的情况吗?我还尝试添加一个特殊条件来呈现该文本,如果 typeof avenueInfo == undefined 但仍然出现错误。
  • 没有。第一条语句仍在评估中。这就是为什么在尝试访问未定义的属性name 时代码仍然崩溃的原因。我建议检查venuInfo 是否有值,然后才能访问其属性
【解决方案2】:

我认为你应该检查这个输出,你过滤prop.venues得到场地信息,所以首先检查场地信息以确认它是否具有bestPhoto属性并检查第13行的props.markers以确认marker.id属性。

const venueInfo = props.venues.find(venue => venue.id === marker.id);

有时“该标记的照片正常显示”,我认为问题仍然是因为道具,照片属性有时是正确的,所以它工作正常。

【讨论】:

  • 看来,因为我之前能够毫无错误地单击标记,所以标记/场地 ID 不会有问题。我还检查它是否在我的条件中具有 bestPhoto 属性。
猜你喜欢
  • 2018-07-15
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2015-09-10
  • 2015-07-15
  • 1970-01-01
相关资源
最近更新 更多