Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复无法读取属性';纬度';未定义的_Javascript_Google Maps - Fatal编程技术网

Javascript 如何修复无法读取属性';纬度';未定义的

Javascript 如何修复无法读取属性';纬度';未定义的,javascript,google-maps,Javascript,Google Maps,我的代码不起作用。我需要将数组的值与输入的值进行比较,并返回纬度和经度值,以便在地图上绘制该点,但仅获取错误无法读取未定义的属性纬度 var auto1 = [{"Latitude": 42.389, "Longitude": -8.567, title: "test"}]; var digit = document.getElementById('searchmap'); var ret = digit.value; function search(namek, myarray){

我的代码不起作用。我需要将数组的值与输入的值进行比较,并返回纬度和经度值,以便在地图上绘制该点,但仅获取错误无法读取未定义的属性纬度

var auto1 = [{"Latitude": 42.389, "Longitude": -8.567, title: "test"}];

var digit = document.getElementById('searchmap');
var ret = digit.value;

function search(namek, myarray){
   for(var i=0; i<myarray.length; i++){
      if(myarray[i].title === namek){
         return myarray[i];
       } else{ return false;
       }
    }
 }

var obj = search(ret,auto1);
function showauto(){
     var retu = new google.maps.LatLng(obj.Latitude,obj.Longitude);
     map.setCenter(retu);
 }
var auto1=[{“纬度”:42.389,“经度”:-8.567,标题:“测试”}];
var digit=document.getElementById('searchmap');
var ret=数字值;
函数搜索(namek,myarray){

对于(var i=0;i您的
search
函数有一个条件返回值。因此,如果数组参数中的任何项都不符合条件,它将返回未定义的值。在尝试引用函数返回值的属性之前,需要处理此情况

编辑:我很犹豫是否提供一个有效的示例,因为我不知道您的规范是什么,但这里有一个可行的示例:

function showauto() {
  const obj = search(ret, auto1)
  if (obj) {
    var retu = new google.maps.LatLng(obj.Latitude,obj.Longitude)
    map.setCenter(retu)
  }
}

如果
search
返回错误值,则
showauto
函数将不会尝试运行映射逻辑。

尝试以下操作:

function search(name, myarray) {
    const foundItem = myarray.find(element => {
        return element.title === name
    })
    return foundItem
}
我也不太确定你在做什么,但也许你在ret变量中有错误

var ret = digit.value
您没有为第行的函数搜索提供正确的值:
var obj=search(ret,auto1)
因此,您的搜索函数找不到任何内容,并且它不返回任何值,
obj
变为
undefined
,并且您无法访问
undefined
的属性,因为没有任何属性。

您不应该假设
搜索
总是返回一些有效对象。If
obj
的可能重复是
false
,它将不具有
.Latitude
.Longitude
属性。这不是我真正的建议。我建议您在尝试使用它之前检查
搜索
的返回值。返回
false
将产生与您已经遇到的问题完全相同的问题。如果函数的返回值为no如果不是一个对象,那么你不应该试图将其视为一个对象。@user10381466什么是
namek,myarray
你能显示更新的代码吗?谢谢@ShoeShineBoy。你是对的,ret变量有错误。我将var obj=search(ret,auto1)改为var obj=search(digit.value,auto1)。这对我来说很有用