Я использую следующий код в Excel, чтобы вернуть расстояние между двумя точками (Origin and Destination).Расстояние чтения xml узел (расстояние) - Google Maps api - Delphi 6
Есть ли аналогичный способ сделать это в Delphi 6?
Я нашел несколько примеров в Интернете, но все функции, которые не существуют в Delphi 6, возможно, потому что они очень старые. Например, IHTMLDocument2, который Delphi 6 не распознает.
Function Km_Distance(Origin As String, Destination As String) As Double
Dim myRequest As XMLHTTP
Dim myDomDoc As DOMDocument
Dim distanceNode As IXMLDOMNode
Let Km_Distance = 0
On Error GoTo exitRoute
Let Origin = Replace(Origin, " ", "%20")
Let Destination = Replace(Destination, " ", "%20")
Set myRequest = New XMLHTTP
myRequest.Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=" _
& Origin & "&destination=" & Destination & "&sensor=false", False
myRequest.send
Set myDomDoc = New DOMDocument
myDomDoc.LoadXML myRequest.responseText
Set distanceNode = myDomDoc.SelectSingleNode("//leg/distance/value")
If Not distanceNode Is Nothing Then Km_Distance = distanceNode.Text/1000
exitRoute:
Set distanceNode = Nothing
Set myDomDoc = Nothing
Set myRequest = Nothing
End Function
Я могу прочитать xml, возвращенный API (код ниже).
Вопрос сейчас: как читать расстояние в этом xml на Delphi? Эквивалент: Set distanceNode = myDomDoc.SelectSingleNode ("// ножка/расстояние/значение")
procedure TForm1.Button3Click(Sender: TObject);
var
vXMLDoc: TXMLDocument;
NodeRec: IXMLNode;
aasdlkj : IXMLDocument;
XMLFile: String;
begin
XMLFile:= 'http://maps.googleapis.com/maps/api/directions/xml?origin=Curitiba&destination=Joinville';
vXMLDoc := TXMLDocument.Create(self);
vXMLDoc.LoadFromFile(XMLFile); //Le Arquivo xml selecionado
Memo1.Clear;
Memo1.Lines.Add(vXMLDoc.XML.Text);
How to do this?
//NodeRec= vXMLDoc.SelectSingleNode("//leg/distance/value")
if not vXMLDoc.Active Then
exit;
end;
«IHTMLDocument2 .. Delphi 6 не распознает» Это будет, если вы правильно настроили проект. IHTMLDocument2 является одним из нескольких интерфейсов, определенных в модуле MSHTML.Pas, который поставляется с Delphi (у меня нет D6, но он определенно был с D5). Вам нужно добавить MSHTML в список Uses вашего кода Delphi (и, возможно, добавить к нему путь к настройкам вашего проекта). – MartynA