За последние 24 часа нас посетил 16581 программист и 1643 робота. Сейчас ищут 1274 программиста ...

Google Maps API

Тема в разделе "JavaScript и AJAX", создана пользователем Anonymous, 22 авг 2008.

  1. Anonymous

    Anonymous Guest

    Кто-нибудь уже сталкивался с задачами прикручивания карты гугля на свой сайт и управление данными через свои команды?

    Передо мной стоит задача:
    1. есть две точки "Отправление" & "Прибытие"
    2. надо чтоб гугл на карте нарисовал дорогу
    3. Сбоку будет чекбокс "Покозать пункты Х"
    4. по нажатию на чекбокс, пункты должны появится на карте.



    Пункты 1-3 думаю не очень сложны, что меня больше волнует, так это 4-ый, ибо я не знаю, данные об этих пунктах, я должен хранить у себя и каждый раз скидывать гуглю, либо у них где-то зарание разместить


    Кто сможет поделится опытом и советом, зарание большое спасибо.


    Сув. КОТ
     
  2. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    У меня точки хранятся в MySQL.
    Основной файл обращается к другому, который выдаёт из базы данные в виде XML.

    PHP:
    1. // Start XML file, create parent node
    2. //$doc = domxml_new_doc("1.0");
    3. $doc = new DOMDocument("1.0");
    4. $node = $doc->createElement("markers");
    5. $parnode = $doc->appendChild($node);
    6.  
    7. // Select all the rows in the markers table
    8. $query = "SELECT * FROM markers";
    9. $result = mysql_query($query);
    10. if (!$result) {
    11.   die('Invalid query: ' . mysql_error());
    12. }
    13.  
    14. header("Content-type: text/xml");
    15.  
    16. // Iterate through the rows, adding XML nodes for each
    17. while ($row = @mysql_fetch_assoc($result)){
    18.   // ADD TO XML DOCUMENT NODE
    19.   $node = $doc->createElement("marker");
    20.   $newnode = $parnode->appendChild($node);
    21.  
    22.   $newnode->setAttribute("name", $row['name']);
    23.   $newnode->setAttribute("address", $row['address']);
    24.   $newnode->setAttribute("lat", $row['lat']);
    25.   $newnode->setAttribute("lng", $row['lng']);
    26.   $newnode->setAttribute("type", $row['type']);
    27. }
    28.  
    29. $xmlfile = $doc->saveXML();
    30. echo $xmlfile;
    Кусок яваскрипта из основного файла:
    [js] GDownloadUrl("genxml.php", function(data) {
    var xml = GXml.parse(data);
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
    var name = markers.getAttribute("name");
    var address = markers.getAttribute("address");
    var type = markers.getAttribute("type");
    var point = new GLatLng(parseFloat(markers.getAttribute("lat")),
    parseFloat(markers.getAttribute("lng")));
    var marker = createMarkerFromXML(point, name, address, type);
    }
    });[/js]

    По направлениям и пути следования можешь почитать тут:
    http://code.google.com/apis/maps/docume ... tml#GRoute
    А вот тут есть примеры:
    http://esa.ilmari.googlepages.com/draggabledir.htm
    http://econym.googlepages.com/steps.htm
     
  3. Anonymous

    Anonymous Guest

    Хммм, короче нактнулся тута на одну фишку, издатель как я понял, сам гугль, короче по этапно:

    1. карта

    2. Стывь галочку на "Tankstellen"

    3. Потом кликай "Route berechnen", вписывай "New Your, NY" -> "Los Angeles, CA" - berechnen

    4. должен получится такой рисунок:
    [​IMG]


    Вопрос, как использовать их базу, и показывать точки ТОЛьКО в доль дароги :roll:
     
  4. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Во-первых, у нас РУССКИЙ форум. С Tankstellen можно идти в сторону "php.de".
    Во-вторых, эти Tankstellen настроены у вас в личных настройках.
    В-третьих, ты ВСЕГДА используешь ИХ базу. Или у тебя уже завелась своя база? :) Посмотри откуда берутся данные по заправкам. Там должно быть написано как их забирать. Своим скриптом их берёшь, расфасовываешь, убираешь те, которые очень далеко от дороги и вуаля.. У тебя своя карта.
     
  5. Anonymous

    Anonymous Guest

    Спасибо за напоминание, я вроде бы знал, если что то я тоже гражданин РФ, а пытатся вникнуть на немецком в програмирование, равносильно тому чтоб попросить негра зделать ядерную бомбу )))))

    Своей бызы для карт у меня нету, зачем изобретать велосипед, если всё уже есть, не вижу смысла, вот только думаю как они отнесутся к такому шагу...


    Да я вот как раз в процессе разгребания их кода, а кода у них как всегда дофига... но думаю данные на карту я рано или позно получу, но вот как отсортироватъ "только те что вдоль дороги"? Я в АПИ такого не припоминаю :roll:
     
  6. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    У каждой точки есть широта и долгота. Нужно только определить широту и долготу основных точек дороги. Это уже отдельный вопрос. :) Нужно копаться в АПИ.
     
  7. Anonymous

    Anonymous Guest

    GRoute
    &
    GStep


    Насколько я понял из прочитаного, можно получить только координаты точек, где маршрут кардинально меняется :(
     
  8. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    А почему не провести линию между ключевыми точками и не отталкиваться от них? Чем больше расстояние между точками - тем больше делай "покрытие" фильтра.
     
  9. Anonymous

    Anonymous Guest

    Johnatan
    Не догоняю ход мысли =(
    Если можно, буду благодарен "разтолковыванию" идеи.

    Спасибо.
     
  10. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Тригонометрию учил в школе? :)
    У меня к сожалению нет возможности сейчас привести тебе примеры расчётов.
    У тебя же есть опорные точки и их координаты? Между каждой точкой проведи прямую линию и двигаясь вдоль линии "покрывай" какую-нибудь условную площадь, например, в форме квадрата. Чем больше расстояние между точками, увеличивай квадрат "покрытия". Всё что попадает в эту площадь - показывай.. Всё что не попадает - не показывай. :)
     
  11. Anonymous

    Anonymous Guest

    Johnatan
    скажу чесно, нет не учил, в германии нечему нормальному не учат, но это отдельная история....

    Ход мысли я понял, но вопрос в том как это осуществить... :roll: