2015-01-04 2 views
0

В настоящее время я строю webapp, чтобы нарисовать маршруты моего городского общественного транспорта (которых нет в Google Maps). Я использую закодированные полилинии для их отображения и создал <ul>, из которого они могут быть выбраны вручную. Он отлично работает, но требует дополнительной функциональности.Нарисуйте полилинию на основе пользовательского щелчка и/или текущего местоположения пользователя

Что я хочу, так это то, что когда пользователь нажимает точку на карте или использует функцию геолокации, маршруты (как предопределенные полилинии), которые проходят мимо, набираются.

Я читал документацию containsLocation(), но, похоже, это не трюк. Есть ли конкретная библиотека, которую мне не хватает для этого?

Уже искали много и не можете найти то, что я хочу.

В настоящее время это код, который рисует ломаную линию (При вызове из <li onclick='drawfunction()';> элемента):

function (drawingfunction) { 

    var map = new google.maps.Map(document.getElementById("map-canvas"), myOptions); 

    var decodedPath = google.maps.geometry.encoding.decodePath('encodedpolyline'); 

    var decodedLevels = decodeLevels('encodedlevels'); 
    } 
+0

Не знаете, в чем проблема, с которой вы сталкиваетесь сейчас. Вы не сможете обнаружить событие onClick или нет рисунка после вызова функции onClick? – ztan

+0

Нет, у меня есть два решаемых @ztan, то, что я хочу сделать, - это сделать все заранее определенные полилинии, которые падают под радиусом вокруг местоположения пользователя, или если местоположение недоступно, пользователь правой кнопкой мыши на «Маршруты поблизости». –

ответ

2

Я думаю, что вы хотите, чтобы проверить функцию google.maps.geometry.poly.isLocationOnEdge.

Предположим, что ваш маршрут Polyline s находятся в routes массиве:

for (var i = 0; i < routes.length; i++) { 
    var matching = google.maps.geometry.poly.isLocationOnEdge(
     location, routes[i], TOLERANCE); 

    routes[i].setOptions({ 
    strokeColor: matching ? MATCHING_COLOR : DEFAULT_COLOR, 
    strokeOpacity: matching ? 1 : .7 
    }); 
} 

Вы хотите поиграться с параметром допуска, чтобы найти подходящий размер для вашей цели щелчка.

Это может быть довольно медленно, если у вас много маршрутов (или сложных маршрутов). Если это так, то вам нужно исследовать структуру данных, такую ​​как quad tree, чтобы сузить маршруты до вызова .

+0

На самом деле я использую закодированные полилинии, но не знаю, как получить декодированные значения в полезный массив. –

+0

Используйте 'google.maps.geometry.encoding.decodePath' –

+0

Пытался достичь этого, но не смог заставить его работать. Есть ли какая-нибудь демоверсия, где я могу увидеть, как она работает? –

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

  • Нет связанных вопросов^_^