简体   繁体   English

Google地图距离矩阵错误“ originAddresses”:[“ nan,nan”]

[英]Google Maps Distance Matrix error “originAddresses”: [“nan, nan”]

I'm developing a search field for an application, where the user types an address or establishment name and the system dynamically returns I've used the Google Maps Distance Matrix API to do the calculation but the parameter 'origins' does not accept the value passed by the geolocation of the HTML that returns 我正在为一个应用程序开发一个搜索字段,用户在其中输入地址或机构名称,系统动态返回。我使用了Google Maps Distance Matrix API进行计算,但是参数“ origins”不接受该值由返回的HTML的地理位置传递

{"rows": [{"elements": [{"status": "ZERO_RESULTS"}]}], "originAddresses": ["nan, nan"] , "destinationAddresses": ["- 25.494926, -49.294444999999996"]} {“ rows”:[{“ elements”:[{“ status”:“ ZERO_RESULTS”}]}}],“ originAddresses”:[“ nan,nan”],“ destinationAddresses”:[“-25.494926,-49.294444999999996”] }

The 'destinationAddress' I manually put to test. 我手动测试的“ destinationAddress”。

function initMap() {
    const autocomplete = new google.maps.places.Autocomplete(document.getElementById('searchBox'));

    var x = document.getElementById("geolocation");

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else {
        x.innerHTML = "Não foi possível obter sua localização atual. A versão atual do navegador é antiga ou a detecção de localização está desabilitada.";
    }

    function showPosition (position) {
        //Put on div the id geolocation the logitude and latitude
        x.innerHTML = position.coords.latitude + ", " + position.coords.longitude

        getDistance();
    }
}

function getDistance() {
    // Get what is written in the div with id geolocation and put in variable cdata
    // Giving alert in cdata correctly displays the user's current longitude and latitude
    var cdata = document.getElementById('geolocation').innerHTML;
    var origin1 = new google.maps.LatLng(cdata); //retorn ['nan, nan'] ?? wtf
    var destination = new google.maps.LatLng(-25.494926, -49.294445);

    var service = new google.maps.DistanceMatrixService();
    service.getDistanceMatrix(
        {
            origins: [origin1],
            destinations: [destination],
            travelMode: 'DRIVING'
        }, callback);
}

function callback(response, status) {
    var x = document.getElementById("geolocation");
    alert(JSON.stringify(response));
}

$("#searchForm").keyup(function () {
    var search = $("#searchBox").val();
    $.post('includes/establishmentSearch.inc.php', {searchForm: search}, function(data){
        $('#searchResponse').html(data);
        if (search == '') {
            $("#searchResponse").empty();
            $(".groupSepare").show();
        } else {
            $(".groupSepare").hide();
        }
    });
});

Detail: I'm only working with latitude and longitude, and I'm not using any google maps because I only need location data. 详细信息:我只使用经度和纬度,并且我不使用任何Google地图,因为我只需要位置数据。

cdata is a string. cdata是一个字符串。 The google.maps.LatLng constructors takes two numbers as arguments. google.maps.LatLng构造函数采用两个数字作为参数。

var cdata = document.getElementById('geolocation').innerHTML;
var coords = cdata.split(",");
var origin1 = new google.maps.LatLng(coords[0], coords[1]); 

proof of concept fiddle 概念证明

code snippet: 代码段:

 function initMap() { const autocomplete = new google.maps.places.Autocomplete(document.getElementById('searchBox')); var x = document.getElementById("geolocation"); if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { x.innerHTML = "Não foi possível obter sua localização atual. A versão atual do navegador é antiga ou a detecção de localização está desabilitada."; } function showPosition(position) { //Put on div the id geolocation the logitude and latitude x.innerHTML = position.coords.latitude + ", " + position.coords.longitude getDistance(); } } function getDistance() { // Get what is written in the div with id geolocation and put in variable cdata // Giving alert in cdata correctly displays the user's current longitude and latitude var cdata = document.getElementById('geolocation').innerHTML; console.log(cdata); var coords = cdata.split(","); var origin1 = new google.maps.LatLng(coords[0], coords[1]); var destination = new google.maps.LatLng(-25.494926, -49.294445); var service = new google.maps.DistanceMatrixService(); service.getDistanceMatrix({ origins: [origin1], destinations: [destination], travelMode: 'DRIVING' }, callback); } function callback(response, status) { var x = document.getElementById("geolocation"); alert(JSON.stringify(response)); } $("#searchForm").keyup(function() { var search = $("#searchBox").val(); $.post('includes/establishmentSearch.inc.php', { searchForm: search }, function(data) { $('#searchResponse').html(data); if (search == '') { $("#searchResponse").empty(); $(".groupSepare").show(); } else { $(".groupSepare").hide(); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input id="searchBox" value="Nebraska" /> <div id="geolocation"></div> <script async defer src="https://maps.googleapis.com/maps/api/js?libraries=places&callback=initMap"></script> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM