Как сделать ссылку "вы имели в виду" с предложениями, в Google Maps API? - PullRequest
2 голосов
/ 12 ноября 2010

Я пытаюсь сделать веб-приложение с API Google Maps, которое дает указания. Прямо сейчас, Он дает хорошие указания, если пользователь не вводит что-то не так, он либо ничего не показывает, либо пытается выяснить это и дает неправильный адрес. Я хочу сделать так, чтобы, если адрес не был распознан, он «имел в виду», а затем выдвинул предложение, близкое к тому, что вы пытались ввести. Я не смог найти ничего в коде Google, который говорил об этом, но мне интересно, если кто-нибудь знает, возможно ли это, и как я могу это сделать?

Спасибо!

1 Ответ

1 голос
/ 12 ноября 2010

loadFromWayPoints () рисует ломаную линию только в том случае, если предоставленные ей входные данные отображаются на любую определенную точку на земле.Вы можете избежать путаницы в функционировании, зафиксировав начальную точку в виде широты и долготы вместо адреса.Затем, используя следующую функцию, вы можете создать «Вы имели в виду» для «Точка», если для toInput возвращено несколько точек.

Код не требует пояснений.Если ты не понимаешь.Ответить в комментарии.Одна из точек, которую вы хотите построить, должна возвращать определенную точку из системы геокодера Google.По моему я использовал точку как определенную точку.И согласовал это со мной.Так что нет шансов получить

geo.getLocations(toInput, function (result){
        //map.clearOverlays();
        if (result.Status.code == G_GEO_SUCCESS) {
            // ===== If there was more than one result, "ask did you mean" on them all =====
            if (result.Placemark.length > 1) {
                document.getElementById("textualdirectionscontainer").innerHTML = "Did you mean:";
                // Loop through the results
                for (var i=0; i<result.Placemark.length; i++) {
                    var p = result.Placemark[i].Point.coordinates;
                    document.getElementById("textualdirectionscontainer").innerHTML += "<br>"+(i+1)+": <a href='javascript:place(" +p[1]+","+p[0]+")'>"+ result.Placemark[i].address+"<\/a>";
                }
            }
            // ===== If there was a single marker =====
            else {
                document.getElementById("textualdirectionscontainer").innerHTML = "";
                var p = result.Placemark[0].Point.coordinates;
                toLatLang = new GLatLng(p[1], p[0]);
    //          place(p[1],p[0]);
                directionsPanel = $('textualdirectionscontainer');
                directionsPanel.getElements('div').each(function(item) {
                    item.dispose();
                });
                directions.clear(); 
                directions.loadFromWaypoints([hotelLatLng.toString(), toLatLang.toString()], {getPolyline:true});
                /*var gp = directions.getPolyline();
                map.addOverlay(gp); */
            } 
        }
    });
...