geocoder.geocode()
требуется объект LatLng
.Ваша переменная latlng
это просто текст.Вам нужно будет найти способ преобразовать его в LatLng
объект.Наиболее очевидный способ, вероятно, состоит в том, чтобы проанализировать его с помощью регулярного выражения или каким-либо другим способом и передать значения lat и lng в new google.maps.LatLng()
.Возможно, есть более элегантное решение, но оно будет работать.
Если это поможет, вот несколько быстрых взломов, которые я сделал с вашим кодом, чтобы подтвердить то, что я написал выше.Я просто жестко запрограммировал вашу первую пару координат.Вам все равно нужно будет что-то написать для анализа данных.
function codeAddress(latlng) {
//Whoops, latlng is a string. We need it to be an object. Let's just hardcode one for demo purposes.
latlng=new google.maps.LatLng(46.0724339, 13.249490000000037);
geocoder.geocode( { 'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
map: map,
position: latlng,
icon: new google.maps.MarkerImage("http://www.google.com/images/icons/product/fusion_tables-32.png")
});
}
});
}
ОБНОВЛЕНИЕ: Если вы (@Massimo) хотите сделать это так, как вы это делаете в своем обновлении, тогдавам нужно убрать скобки и, возможно, пробел.Попробуйте что-то вроде этого:
function getData(response) {
numRows = response.getDataTable().getNumberOfRows();
//create an array of row values
for (i = 0; i < numRows; i++) {
var rowtext = response.getDataTable().getValue(i,0);
var sanitizedText = rowtext.replace(/[\(\)\s]/g, "");
var strArr = sanitizedText.split(",");
document.getElementById("via").innerHTML = rowtext;
row = new google.maps.LatLng(strArr[0],strArr[1]);
codeAddress(row);
}
}