Javascript Google Maps API标记单击时出现匿名函数错误

Javascript Google Maps API标记单击时出现匿名函数错误,javascript,reactjs,google-maps-api-3,foursquare,Javascript,Reactjs,Google Maps Api 3,Foursquare,使用Foursquare Google Maps API,我的目标是使用Foursquare提供的场馆照片属性,如果该属性在场馆元数据中可用,则将其与场馆名称一起呈现在Google Maps API信息窗口中。 如果两个属性中只有一个可用,我只想渲染可用的属性。如果venueInfo未定义或两个属性都不可用,我只想在信息窗口中显示“无可用信息”。我试着用一个有多个条件的条件运算符来实现这一点 对于至少一个标记,有时会显示信息,但有时会出现这些错误 我不知道出了什么问题,也不知道如何解决。如果“

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

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

我不知道出了什么问题,也不知道如何解决。如果“name”属性未定义,条件是否应该使其返回显示“No info available”?如果之前标记的信息显示良好,当我再次单击同一标记时,它如何停止工作

以下是我在“信息”窗口中渲染的条件语句:

            <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>

{venueInfo.name&&venueInfo.bestPhoto?
{venueInfo.name}

:venueInfo.name?{venueInfo.name}

:venueInfo&&venueInfo.bestPhoto?:没有可用的信息

这里是GitHub上的参考。

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


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

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


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

我认为您应该检查此输出,过滤prop.vices以获取venueInfo,因此首先检查venueInfo以确认其是否具有bestPhoto属性,并检查第13行中的props.markers以确认marker.id属性

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

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

我认为你应该检查这个输出,你过滤prop.vices以获得venueInfo,因此首先检查venueInfo以确认它是否具有bestPhoto属性,并检查第13行中的props.markers以确认marker.id属性

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

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

venueInfo未定义,您需要记录props.victions.find的输出(vention=>vention.id==marker.id);您的道具不包含id与marker.id匹配的场地。如果单击以前使用过的同一个标记(场地和标记id正确关联),它将如何更改?venueInfo未定义,您需要记录道具的输出。Vincement.find(场地=>场地id==marker.id);您的道具不包含id与标记匹配的场地。如果单击以前使用过的同一标记(场地和标记id正确关联),它将如何更改?如果之前的条件都不满足,我有一个“其他”条件来呈现“无可用信息”。这是否包括venueInfo未定义的情况?如果typeof venueInfo==未定义,我还尝试添加一个特殊条件来呈现该文本,但仍然出现错误。否。第一条语句仍在计算中。这就是为什么代码在试图访问未定义的属性
name
时仍然崩溃的原因。我建议进行检查,查看
venuInfo
是否有值,然后才访问其属性。如果前面的条件都不满足,则我有一个“else”条件来呈现“无可用信息”。这是否包括venueInfo未定义的情况?如果typeof venueInfo==未定义,我还尝试添加一个特殊条件来呈现该文本,但仍然出现错误。否。第一条语句仍在计算中。这就是为什么代码在试图访问未定义的属性
name
时仍然崩溃的原因。我建议做一个检查,看看
venuInfo
是否有值,然后才访问它的属性。这看起来像是因为我以前能够在没有错误的情况下单击标记,标记器/场馆ID不可能有问题。我还检查它在我的条件中是否具有bestPhoto属性。似乎因为我以前能够无错误地单击标记器,所以标记器/场馆ID不可能有问题。我还检查它在我的条件中是否具有bestPhoto属性。