2016-11-23 3 views
0

Я успешно выполнил сервис направления карты google api: https://developers.google.com/maps/documentation/javascript/directions с включенной опцией «draggble». Можно ли изменить текстовую метку кнопки «Перетаскивание» (скриншот) при наведении курсора? В настоящее время в нем говорится: 'Перетащите, чтобы сменить маршрут'. Мне нужно изменить его. Я проверил документацию: https://developers.google.com/maps/documentation/javascript/reference, но ничего не смог найти для этого.Google Map Directions Service API «Перетащить, чтобы изменить изменение маршрута»

текущий код аналогичен: https://developers.google.com/maps/documentation/javascript/examples/directions-draggable

Пожалуйста, помогите мне. Заранее спасибо!

enter image description here

Update: Я только что получил авансовый голос за: "Есть либо слишком много возможных ответов, или хорошие ответы будут слишком долго для этого формата Пожалуйста, добавьте детали, чтобы сузить набор ответов. или изолировать проблему, на которую можно ответить в нескольких абзацах. ". Код доступен в предоставленном URL-адресе, и я думаю, что может быть доступно только одно решение с помощью google map api. Если есть какая-либо дополнительная информация, добавьте комментарий.

+0

предоставьте свой код, я использовал этот api раньше и никогда не видел эту кнопку – iceblade

+0

@iceblade: вы можете увидеть всплывающую подсказку «Перетащите, чтобы изменить маршрут» на странице https://developers.google.com/maps/documentation/ javascript/examples/directions-draggable url. –

+0

@iceblade: чтобы увидеть всплывающую подсказку «Перетащить, чтобы изменить маршрут», просто наведите указатель мыши на маршрут: https://developers.google.com/maps/documentation/javascript/examples/directions-draggable –

ответ

1

Возможно, мой ответ будет отклонен, но, возможно, он будет полезен для вас. Скажем, это просто идея. Таким образом, вы можете изменить подсказку маршрута после изменения направления.

directionsDisplay.addListener('directions_changed', function() { 
     directionsDisplay.gd.b.setTitle('This is your new tooltip for the route.'); 
    }); 

Но, к сожалению, в момент directions_changed случае нет маркеров еще, так или иначе, вы должны отложить установки их название:

 for (var i = 0; i < directionsDisplay.b.G.length; i++){ 
     directionsDisplay.b.G[i].setTitle('Marker ' + i + ' tooltip'); 
     } 

UPDATE: Более общий код:

directionsDisplay.addListener('directions_changed', function() { 
     setRouteTitle(directionsDisplay, 'The new tooltip'); 
    }); 

    function setRouteTitle(dirsDispl, newTitle){ 
     var ddObjKeys = Object.keys(dirsDispl); 
     for (var i = 0; i < ddObjKeys.length; i++){ 
      var obj = dirsDispl[Object(ddObjKeys)[i]]; 
      var ooObjKeys = Object.keys(obj); 
      for (var j = 0; j < ooObjKeys.length; j++){ 
       var ooObj = obj[Object(ooObjKeys)[j]]; 
       if ((ooObj) && (ooObj.hasOwnProperty('title')) && (ooObj.hasOwnProperty('shape')) && (ooObj.shape.type == 'circle')){ 
        ooObj.setTitle(newTitle); 
       } 
      } 
     } 
    }; 

Надеюсь, это поможет.

+0

Ты потрясающий! Большое спасибо: D !! –

+0

можете ли вы проверить и сообщить, работает ли этот код? Я думаю, что что-то изменилось, и ваш код больше не работает! –

+0

Нет. Я получаю: «Ошибка TypeError: directionsDisplay.gd is undefined»! –

Смежные вопросы