(vue3+ts)高德地图不显示地图信息并报错:Error: Invalid Object: LngLat(NaN, NaN)

为了修复 Error: Invalid Object: LngLat(NaN, NaN) 错误并确保地图正确显示,需要仔细检查所有与经纬度相关的操作,确保所有经纬度数据都是有效的

1、确保在接收参数的时候他们都是有效的经纬度

2、初始化地图的时候,也需要确保 mapCenter 是有效的经纬度数据。如果无效,提供默认值

3、在所有创建 LngLat 对象的地方,确保数据有效性。

我的问题最后出在了 【初始化地图的时候】

更改前:

const initMap = () => {
  AMapLoader.load({
    key: "写自己的", // 申请好的Web端开发者Key,首次调用 load 时必填
    version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    plugins: ["AMap.ToolBar", "AMap.MapType", "AMap.Geocoder"] // 需要使用的的插件列表,如比例尺'AMap.Scale'等
  })
    .then(AMap => {
      map = new AMap.Map("container", {
        //设置地图容器id
        viewMode: "3D", //是否为3D地图模式
        zoom: 15, //初始化地图级别
        center: mapCenter.value || [114.066182, 22.549351]
      });
    ...............

更改后:

const initMap = () => {
  AMapLoader.load({
    key: "自己的", // 申请好的Web端开发者Key,首次调用 load 时必填
    version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    plugins: ["AMap.ToolBar", "AMap.MapType", "AMap.Geocoder"] // 需要使用的的插件列表,如比例尺'AMap.Scale'等
  })
    .then(AMap => {
      map = new AMap.Map("container", {
        //设置地图容器id
        viewMode: "3D", //是否为3D地图模式
        zoom: 15, //初始化地图级别
        center: mapCenter.value && mapCenter.value.length === 2 && !isNaN(mapCenter.value[0]) && !isNaN(mapCenter.value[1]) ? mapCenter.value : [114.066182, 22.549351] //初始化地图中心点位置
      });

      // 其余代码...
    })
    .catch(e => {
      console.log(e, "e");
    });
};

改了之后就没报错了,也能正确显示定位的地图。问题解决!!!!

如果你的还不行:可以再看一下:1、确保在接收参数的时候他们都是有效的经纬度

const acceptParams = async (params: DrawerProps) => {
       ......
    // 设置中心点的经纬度  浮点数
    centerMarker.value = [parseFloat(params.row.locationCenterLongitude), parseFloat(params.row.locationCenterLatitude)];
    console.log(centerMarker.value[0], "centerMarker");
    // 将多边形的字符串形式解析成数组形式
    lnglatArrMarker.value = params.row.polygon.split(";").map((item: any) => item.split(",").map(parseFloat));
    console.log(lnglatArrMarker.value, "lnglatArrMarker");
  }
  initMap();
  drawerVisible.value = true;
};

如果还是没有解决你的问题,可以根据文章开始的部分举出的三个点,来挨着进行判断检查

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Invalid Object: LngLat(NaN, NaN) 是一个报错信息,意思是传入了一个无效的经纬度对象。这个错误可能是在开发一个<el-dialog>嵌套高德地图的时候出现的。 这个错误通常发生在使用高德地图API时,传入的经纬度值为NaN(Not a Number)时会出现。这可能是由于代码中对经纬度的处理不当或者没有正确初始化地图对象导致的。要解决这个问题,你可以检查代码中是否正确设置了经纬度值,并确保地图对象的初始化过程正确无误。 如果你没有在代码中手动设置经纬度,那么可能是在引入地图时出现了问题。你可以检查是否正确引入了高德地图的依赖和配置,以及是否正确注册了你的API key和secret。确保按照高德地图的文档和指导进行配置和引入。 另外,如果你在项目中使用了Redis,并且遇到了类似"Fatal error: Uncaught Error: Class 'Redis' not found"的错误,那可能是因为你没有正确安装或配置Redis扩展。请确保在使用Redis之前,你已经正确安装了Redis扩展,并且在PHP的配置文件中启用了该扩展。 总之,解决Invalid Object: LngLat(NaN, NaN)错误的关键是确保正确设置经纬度值和地图对象的初始化,并检查是否正确引入了高德地图依赖和配置。如果你还遇到了其他问题,请提供更多的错误信息和相关代码,以便我们更好地帮助你解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [高德地图 vue-amap LngLat(NaN, NaN) 报错](https://blog.csdn.net/github_33538490/article/details/114028878)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [lnmp Fatal error: Uncaught Error: Class 'Redis' not found-附件资源](https://download.csdn.net/download/weixin_42204303/15516915)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Vue2使用高德地图报错Invalid Object: LngLat(NaN, NaN)](https://blog.csdn.net/feng4175/article/details/131101800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值