Я пытаюсь проложить маршрут до позиции маркера Google Maps из почтового индекса, который пользователь может ввести в текстовое поле.Я использую Карты, Места и Направления Библиотеки Google.
Я нашел этот пример от Google, и я пытаюсь работать с ним http://code.google.com/apis/maps/documentation/directions/
Я думаю, что я в значительной степени там.Я хочу, чтобы пользователь мог щелкнуть маркер на карте, а затем щелкнуть ссылку с надписью «Маршруты от первого маркера».Я могу заставить это отображаться правильно, и я передаю правильное местоположение в функцию, но по какой-то причине она не сохраняет все координаты широты.Похоже, что он отбрасывает один из них, и поэтому выдает ошибку.Если я распечатываю то, что передаю новой функции (placeLoc), она показывает только одну из координат.
выдает ошибку: Uncaught Error: недопустимое значение для свойства: -0.5796900000000278
Вот код, который я получил до сих пор:
function addPlaceResults(){
var request = {
location: midWayPoint,
radius: 7000,
types: [type]
};
infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(map);
service.search(request, callback);
service.getDetails(request, callback);
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
}
}
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
var request = { reference: place.reference };
service.getDetails(request, function(details, status) {
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(
details.name + "<br />"
+ details.formatted_address + "<br />"
+ "<a target='_blank' href='" + details.website +"'>Visit Website</a>" + "<br />"
+ details.formatted_phone_number + "<br />"
+ "<a href='#' onclick='dPoint1(" +placeLoc+ ")'>Directions from Marker One</a>" + "<br />"
);
infowindow.open(map, this);
});
});
}
};
//directions from point one
function dPoint1(x) {
console.log(x);
directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer({
suppressMarkers: true,
suppressInfoWindows: true
});
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('directions-panel'));
var request = {
origin: address1,
destination: x,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status){
if (status == google.maps.DirectionsStatus.OK)
{
directionsDisplay.setDirections(response);
}
});
};
Я пытался включить в этот вопрос только соответствующий код и подробности.Если есть что-то, что я пропустил, или что-то непонятное, пожалуйста, дайте мне знать, и я добавлю это / сделаю все возможное, чтобы прояснить себя.
Еще раз, я буду очень признателен за любую помощь.
Приветствия JA
Редактировать
Хорошо, это имеет смысл.Спасибо, парни.
Я пытался использовать метод toString (), но это не работает.Я могу успешно передать строку с двумя значениями, разделенными запятой, в функцию dPoint1 с помощью toUrlValue ().Когда я делаю это, я могу вывести их обоих на консоль, используя console.log (x, y), но на самом деле я не могу запустить код.Я получаю ту же ошибку, что и раньше.
Я думаю, что проблема в том, что мне нужно, чтобы они были чем-то единым, поэтому я могу добавить его в 'destination:', например, в конечном итоге это должно быть destination: x, но, поскольку мне нужно передать x & y в Iдолжен иметь пункт назначения: x, y, который выдает ошибку.
Я предполагаю, что мне нужно использовать метод google.maps.LatLng ().
Я добавил это поздно вечером:
newlatlng = new google.maps.LatLng((placeLoc.lat()+placeLoc.lat()));
, который дал мне несколько указаний, но не в нужном месте!
У кого-нибудь есть идеи о том, как я могу это использовать?
Большое спасибо за всю ту помощь, которую вы мне оказали.
JA