Google Maps API和Google Maps位置在PHP中显示了不同的位置

RKD

我正在将客户网站与Google API集成在一起,我的任务是使用用户的邮政编码(UK)验证用户地址,并使用https://ideal-postcodes.co.uk/来获取地址。

因此,当用户输入邮政编码时,会将带有用户输入的邮政编码的ajax请求发送到该邮政编码URL。然后从该邮政编码中返回一组地址,然后用户选择其中一个。

现在,该邮政编码URL还返回该特定邮政编码的经度和纬度。对于下一步,我使用了Google Maps API,该API显示了方向,距离以及从源到目的地的路线。

一切正常,但是对于某些邮政编码,它显示了错误的位置。

当我在Google地图中检查该邮政编码时,它可以正常显示;因此,经纬度没有问题。相反,还有其他一些我无法找到的东西。

请帮我。我尝试搜索并使用许多不同的编码方式,但是仍然保持不变。

这是我的JS代码,其中我计算了多个距离。

var map;
var latc;
var lonc;
var latd;
var lond;
var latr;
var lonr;
var directionsService;
var directionsDisplay;
var orgin;
var destinations;
var midway;
var waypoints = [];
var service;
var stat = false;
function initMap()
{
    map = null;
    waypoints=[];
    directionsDisplay = null;
    directionsService = null;
    orgin = "";
    destinations = "";
    latc = $("#lat").val();
    lonc = $("#lon").val();
    latd = $("#latd").val();
    lond = $("#lond").val();
    lonr = $("#lonr").val();
    latr = $("#latr").val();
    orgin = {lat: parseFloat(latc), lng: parseFloat(lonc)};
    if(latr==="0" && lonr==="0")
    {
        destinations = {lat: parseFloat(latd), lng: parseFloat(lond)};
    }
    else
    {
        stat = true;
        waypoints.push({
            location: new google.maps.LatLng(parseFloat(latd),parseFloat(lonr)),
            stopover:true
        });
        midway = {lat: parseFloat(latd), lng: parseFloat(lonr)};
        destinations = {lat: parseFloat(latr), lng: parseFloat(lonr)};
    }
    console.log(orgin);
    console.log(destinations);
    directionsService = new google.maps.DirectionsService;
    directionsDisplay = new google.maps.DirectionsRenderer;
    map = new google.maps.Map(document.getElementById('map'), {
        center: orgin,
        zoom: 17,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    directionsDisplay.setMap(map);
    calculateAndDisplayRoute(directionsService, directionsDisplay);
}
function calculateAndDisplayRoute(directionsService, directionsDisplay)
{
        directionsService.route(
            {
                origin: orgin,
                destination: destinations,
                waypoints: waypoints,
                durationInTraffic: true,
                optimizeWaypoints: true,
                provideRouteAlternatives: true,
                avoidHighways: false,
                avoidTolls: false,
                travelMode: google.maps.TravelMode.DRIVING
            },
            function(response, status)
            {
                if (status === google.maps.DirectionsStatus.OK) {
                    directionsDisplay.setDirections(response);
                    distanceandduration();
                }
                else
                {
                    window.alert('Directions request failed due to ' + status);
                }
            }
        );
}
function distanceandduration()
{
    if(latr==="0" && lonr==="0")
    {
        var a = new Array(orgin);
        var b = new Array(destinations);
    }
    else
    {
        var a = new Array(orgin,midway);
        var b = new Array(midway,destinations);
    }
    service = new google.maps.DistanceMatrixService();
    service.getDistanceMatrix({
        origins: a,
        destinations: b,
        travelMode: google.maps.TravelMode.DRIVING,
        unitSystem: google.maps.UnitSystem.METRIC,
        durationInTraffic: true,
        avoidHighways: false,
        avoidTolls: false
    }, function (response, status) {
        if (status == google.maps.DistanceMatrixStatus.OK && response.rows[0].elements[0].status != "ZERO_RESULTS") {
            var distnumber = [];
            var durationnumber = [];
            var dvDistance = document.getElementById("showde");
            dvDistance.innerHTML = "";
            dvDistance.innerHTML = "<div class='row-fluid'><div class='control-group span12'><div class='controls'>";
            for(var i=0;i<response.rows.length;i++)
            {
                var distance = "";
                var duration = "";
                if(i===0)
                {}else{
                    dvDistance.innerHTML += "<br/>";
                }
                distnumber[i] = Math.round(parseInt(response.rows[i].elements[i].distance.value)/1000);
                durationnumber[i] = rectime(response.rows[i].elements[i].duration.value);
                console.log(response.rows[i].elements[i].duration);
                distance += response.rows[i].elements[i].distance.text;
                duration += response.rows[i].elements[i].duration.text;
                dvDistance.innerHTML += "<h2>Route "+(i+1)+"</h2>";
                dvDistance.innerHTML += "Distance: " + distance + "<br />";
                dvDistance.innerHTML += "Duration:" + duration;
                dvDistance.innerHTML += "<hr>";
            }
            dvDistance.innerHTML +="</div></div></div>";
            if(latr==="0" && lonr==="0")
            {
                enquirydetailreport(distnumber,durationnumber,'oneway');
            }
            else
            {
                enquirydetailreport(distnumber,durationnumber,'return');
            }
        } else {
            alert("Unable to find the distance via road.");
        }
    });
}
function rectime(sec) {
    var hr = Math.floor(sec / 3600);
    var min = Math.floor((sec - (hr * 3600))/60);
    sec -= ((hr * 3600) + (min * 60));
    sec += ''; min += '';
    while (min.length < 2) {min = '0' + min;}
    while (sec.length < 2) {sec = '0' + sec;}
    hr = (hr)?hr:'00';
    return hr+ ':' + min + ':' + sec;
}

并且请注意,此邮政编码问题仅在一些特定的邮政编码中发生:

Example : Source : CW10 0QF
Waypoint : G78 1EP
Destination : CW10 0QF

任何帮助表示赞赏。谢谢你。

RKD

对不起大家。我得到了它。我只是错误地给出了源和目标的经度和长期价值。像源A具有latA和lonA,目的地B具有latB和lonB。但是我错误地将其写为Source A latA和lonA,目的地B包含latb和lonA->这是我的错误。希望这对以后的人有所帮助。谢谢

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google Maps API和Google Maps位置在PHP中显示了不同的位置

来自分类Dev

Google Maps API和显示位置

来自分类Dev

在Android的Google Maps中显示位置

来自分类Dev

Google Maps API未显示我的位置

来自分类Dev

使用Google Maps API在Google Maps上的不同位置使用不同的颜色

来自分类Dev

使用Google Maps API在Google Maps上的不同位置使用不同的颜色

来自分类Dev

ASP和Google Map Api:通过google.maps.event.addListener显示asp:textbox的位置

来自分类Dev

Google Maps API在某些位置显示了错误的位置,但在其他位置显示了正确的位置

来自分类Dev

指向Google Maps Android中的位置

来自分类Dev

Google Maps API-查找最近的位置

来自分类Dev

使用Google Maps API的位置标记问题

来自分类Dev

Google Maps API-位置查找器

来自分类Dev

在Google Maps API中插入从文件读取的多个位置

来自分类Dev

最终如何在Google Maps API中更改标记位置?

来自分类Dev

更新了标记的位置,但上一个标记仍显示在google maps api中

来自分类Dev

Angular Js和Google Maps API ngGeolocation

来自分类Dev

Google Maps Api,GeoJson和InfoWindow

来自分类Dev

角度 $q 和 google.maps.api

来自分类Dev

DocumentFragment和Google Maps

来自分类Dev

Google Maps API停止显示

来自分类Dev

Google Maps API RefererNotAllowedError

来自分类Dev

Google Maps API DeletedApiProjectMapError

来自分类Dev

Google Maps Api许可

来自分类Dev

Google Maps Api

来自分类Dev

Google Maps REST API

来自分类Dev

Google Maps API请求

来自分类Dev

Google Maps Directions API

来自分类Dev

Google Maps API参数

来自分类Dev

iOS Google Maps主页位置按钮未显示