Я полный нуб с API Google Maps, и я начал с данного скрипта, который я редактирую, что мне нужно сделать.
В этом случае у меня есть карта с некоторыми точками, взятыми из базы данных. Они такие (после того, как я получу lat / lng из базы данных):
var route1 = 'from: 37.496764,-5.913379 to: 37.392587,-6.00023';
var route2 = 'from: 37.392587,-6.00023 to: 37.376964,-5.990838';
routes = [route1, route2];
Тогда мой скрипт выполняет следующие действия:
for(var j = 0; j < routes.length; j++) {
callGDirections(j);
document.getElementById("dbg").innerHTML += "called "+j+"<br>";
}
А потом направления:
function callGDirections(num) {
directionsArray[num] = new GDirections();
GEvent.addListener(directionsArray[num], "load", function() {
document.getElementById("dbg").innerHTML += "loaded "+num+"<br>";
var polyline = directionsArray[num].getPolyline();
polyline.setStrokeStyle({color:colors[num],weight:3,opacity: 0.7});
map.addOverlay(polyline);
bounds.extend(polyline.getBounds().getSouthWest());
bounds.extend(polyline.getBounds().getNorthEast());
map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));
});
// === catch Directions errors ===
GEvent.addListener(directionsArray[num], "error", function() {
var code = directionsArray[num].getStatus().code;
var reason="Code "+code;
if (reasons[code]) {
reason = reasons[code]
}
alert("Failed to obtain directions, "+reason);
});
directionsArray[num].load(routes[num], {getPolyline:true});
}
Дело в том, что я хочу поменять маркеры A и B, которые я получаю от Google на карте, на маркеры для каждой из точек, которые я использую (у каждой есть свой значок в базе данных), но я не не знаю как это сделать.
Кроме того, что было бы фантастически, но я не знаю, если это вообще возможно, так это следующее: когда я получаю указания, я получаю что-то вроде этого:
(a) Street A
directions
(b) Street B
А я хочу
(a) Name of first point
directions
(b) Name of second point (also from database)
Я понимаю, что мои знания предмета очень недостаточны, и вопрос может быть немного расплывчатым, но я был бы признателен за любой совет, указывающий мне в правильном направлении.
РЕДАКТИРОВАТЬ: Хорошо, я многому научился на API Google с этой проблемой, но я все еще далек от того, что мне нужно. Я научился скрывать маркеры по умолчанию, выполнив следующее:
// Hide the route markers when signaled.
GEvent.addListener(directionsArray[num], "addoverlay", hideDirMarkers);
// Not using the directions markers so hide them.
function hideDirMarkers(){
var numMarkers = directionsArray[num].getNumGeocodes()
for (var i = 0; i < numMarkers; i++) {
var marker = directionsArray[num].getMarker(i);
if (marker != null)
marker.hide();
else
alert("Marker is null");
}
}
А теперь, когда я создаю новые маркеры, делаю это:
var point = new GLatLng(lat,lng);
var marker = createMarker(point,html);
map.addOverlay(marker);
Они появляются, но не кликабельны (всплывающее окно с html не будет отображаться)