Я пытаюсь получить указания на позицию маркера Google Maps из почтового индекса, который пользователь может ввести в текстовое поле. Я использую Карты Google, места и направления Google.Проложить маршрут к маркерам Google Maps
Я нашел этот пример из Google, и я пытаюсь работать от него http://code.google.com/apis/maps/documentation/directions/
Я думаю, что я очень много там. Я хочу, чтобы пользователь мог щелкнуть маркер с карты, а затем щелкнуть ссылку, в которой говорится «Направления от маркера один». Я могу заставить это выглядеть правильно, и я передаю правильное местоположение в функцию, но по какой-то причине он не сохраняет все координаты latlng. Похоже, что он падает на одного из них, и поэтому он выдает ошибку. Если я распечатаю то, что я передаю новой функции (placeLoc), она отображает только одну из координат.
ошибка дает это: Uncaught Ошибка: Недопустимое значение для объекта: -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), но я не могу запустить код. Я получаю ту же ошибку, что и раньше.
Я думаю, проблема в том, что мне нужно, чтобы они были одной, поэтому я могу добавить ее в пункт назначения: например, она должна быть в конечном счете назначена: x, но потому что мне нужно передать x & y у меня есть имеют назначение: x, y, которое выдает ошибку.
Я предполагаю, что мне нужно использовать метод google.maps.LatLng().
Я добавил это в конце прошлой ночью:
newlatlng = new google.maps.LatLng((placeLoc.lat()+placeLoc.lat()));
, который дал мне несколько направлений, но не в нужном месте!
Есть ли у кого-нибудь идеи о том, как я могу это использовать?
Большое спасибо за всю помощь, которую вы мне дали.
JA
Используйте запятую, чтобы произвести два аргумента для LatLng (которая нуждается в два номера, я удивлен, что работал только один!): 'Newlatlng = новый google.maps.LatLng (placeLoc.lat(), placeLoc .lat()); ' –
Не уверен, что опечатка или нет, но попробуйте второе значение как placeLoc.lng() ' newlatlng = new google.maps.LatLng (placeLoc.lat(), placeLoc.lng()); ' –
Спасибо за помощь, ребята. Вчера я его отсортировал. Новый код выглядит следующим образом: '+" Directions from Marker One "" Затем я изменил dPoint1, чтобы принять x & y, тогда я создал 'var newlatlng = new google.maps.LatLng (x, y);' в верхней части функции dPoint1 и использовал newlatlng как источник. Спасибо за то, что вы наклеились на меня со мной! JA – Jim