闪电网络组件专家超级徽章:挑战 7

Lightning Web Component Specialist Super badge: Challenge 7

我在解决挑战 7 时遇到问题 我在 JS 文件中有所需的导入和所需的函数。仍然#Trailhead 给出错误:

我们在组件 boatsNearMe 控制器中找不到 getLocationFromBrowser() 函数。确保组件是根据要求创建的,包括使用 'getCurrentPosition()' 获取导航器的地理位置,使用 'position =>' 的箭头符号,从位置获取坐标,并将它们分配给控制器的属性'latitude' 和 '经度,使用适当的区分大小写。

---- 删除代码部分以保留 Trailhead 的政策----

我想这是我在代码中遗漏的东西。

验证码非常挑剔。如果你去掉单词位置周围的括号,我认为它会起作用。

您对地理定位纬度和经度的引用缺少“_”

你有这样的(单下划线);

rowBoat.Geolocation_Latitude_s

而且需要像这样(双下划线);

rowBoat.Geolocation__Latitude__s

我没有检查所有代码,但至少这些在您的代码中看起来是错误的。 另外,不确定在这种情况下(不再)是否明确需要 @track

您可以尝试 2 处更改来通过挑战,

  1. 去掉getCurrentPosition回调函数中position两边的括号

  2. 按照以下步骤纠正 mapMarkers 创建代码 传递给 createMapMarkers 的数据格式如下,

    '[{"属性":{"类型":"Boat__c","url":"/services/data/v48.0/sobjects/Boat__c/a022w000006RA28AAG"}, "Name":"三亚","Geolocation__Latitude__s":24.8513290,"Geolocation__Longitude__s":119.4862410,"Id":"a022w000006RA28AAG"},{"attributes":{"type":"Boat__c","url":"/services/data/v48.0/sobjects/Boat__c/a022w000006RA2DAAW"},"姓名":"龙雪","Geolocation__Latitude__s":22.6216820," =43=]":113.7630620,"Id":"a022w000006RA2DAAW"}]'

因此,您可以使用 JSON.parse(boatData) 解析它,然后在其上调用 map() 函数,

this.mapMarkers = JSON.parse(boatData).map((rowBoat) => {
  return {
    location: {
      Latitude: rowBoat.Geolocation__Latitude__s,
      Longitude: rowBoat.Geolocation__Longitude__s
    },
    title: rowBoat.Name
  };
});

并且一定要使用 双下划线 从地理位置访问纬度和经度,如上所示。

还有一点,在创建 mapMarkers 之前将 isLoading 设置为 true,在 createMapMarkers 方法中创建后将其设置为 false。

希望这对你有用:)