错误:InvalidValueError:setCenter:不是 LatLng 或 LatLngLiteral:在属性 lat:不是数字

Posted

技术标签:

【中文标题】错误:InvalidValueError:setCenter:不是 LatLng 或 LatLngLiteral:在属性 lat:不是数字【英文标题】:error:InvalidValueError: setCenter: not a LatLng or LatLngLiteral: in property lat: not a number 【发布时间】:2017-12-06 07:16:55 【问题描述】:
function initAutocomplete() 
    var lat=document.getElementById('lat').value;
    var lng=document.getElementById('lng').value;
    console.log(lat);
    console.log(lng);


    var map = new google.maps.Map(document.getElementById('map'), 
      center: lat:lat, lng:lng,
      zoom: 13,
      mapTypeId: 'roadmap'
    );

它给了我以下错误:

error:InvalidValueError: setCenter: not a LatLng or LatLngLiteral: in 属性 lat:不是数字

【问题讨论】:

.value 返回一个字符串 -> parseFloat() 错误已解决,但您能帮忙定位位置吗?实际上该位置在地图上如何显示,但如何显示该位置的标记? .谢谢 将其作为一个单独的问题发布(其中应包括minimal, complete, and verifiable example(但不要发布您的 API 密钥;)) 【参考方案1】:

htmlInputElement.value 属性将值作为字符串返回。

您必须先用parseFloat() 解析latlng 的内容,然后才能将其传递给地图API

function initAutocomplete() 
    var lat = parseFloat(document.getElementById('lat').value);
    var lng = parseFloat(document.getElementById('lng').value);

    var map = new google.maps.Map(document.getElementById('map'), 
        center: 
            lat: lat,
            lng: lng
        ,
        zoom: 13,
        mapTypeId: 'roadmap'
    );

【讨论】:

感谢老兄的帮助...已解决 :))【参考方案2】:

只需在变量前添加“+”即可:

function initAutocomplete() 
var lat=document.getElementById('lat').value;
var lng=document.getElementById('lng').value;

var map = new google.maps.Map(document.getElementById('map'), 
  center: lat: +lat, lng: +lng,
  zoom: 13,
  mapTypeId: 'roadmap'
);

【讨论】:

【参考方案3】:

同样的错误,略有不同的场景:

尝试使用自动完成的纬度/经度更新地图时,我不断收到此错误(与 OP 相同):

    var place = autocomplete.getPlace();
    var geo = place.geometry.location;
    loadMapAt(new google.maps.LatLng(geo.lat, geo.lng));

这个“一个奇怪的技巧”修复了它。将第二行替换为:

    var geo = JSON.parse(JSON.stringify(place.geometry.location));

【讨论】:

【参考方案4】:

我在使用上述建议未解决的自动完成时也遇到了这个错误。就我而言,我可以通过将 latlng 作为属性传递给我的 Gmaps 元素来纠正此问题:

<Gmaps width=width
       height=height
       lat=lat
       lng=lng
       params = 
           v: '3.exp',
           libraries: 'geometry, visualization, places', 
           key: GOOGLE_MAPS_API_KEY
       
       onMapCreated=this.onMapCreated/>

这是使用 react-gmaps 1.4.2 版。

【讨论】:

【参考方案5】:

只需初始化参数:

function initMap(lat_ = 0, lon_ = 0) 
    var map = new google.maps.Map(document.getElementById('map'), 
        center: lat: lat_, lng: lon_,
        zoom: 10
    );

【讨论】:

以上是关于错误:InvalidValueError:setCenter:不是 LatLng 或 LatLngLiteral:在属性 lat:不是数字的主要内容,如果未能解决你的问题,请参考以下文章

如何修复Uncaught InvalidValueError:setPosition:不是LatLng或LatLngLiteral:在属性lat中:不是数字?

InvalidValueError:不是 HTMLInputElement 的实例

未捕获的 InvalidValueError:不是数组

为啥这不是 google.maps.Map 的地图实例? InvalidValueError:setMap:不是 Map 的实例;

InvalidValueError:initAutocomplete 不是 Google Places 和 Autocomplete API 的功能

未捕获的 InvalidValueError:不是 Feature 或 FeatureCollection