2015-04-01 3 views
-1

Мой сайт использует Google Map V3 для сохранения маркера в базе данных. Когда добавляется новый маркер, он открывает информационное окно с формой для сохранения в БД PHP. В этой форме есть поле «Выбрать» с разными категориями. когда карта отображается, я хочу, чтобы у каждого маркера был другой значок, в зависимости от категории, в которой он был сохранен. Пока я могу загрузить карту и отображать маркеры, но с теми же значками. Я добавил немного кода из другого проекта, чтобы пройти через каждую категорию, но не совсем уверен, как заставить его работать здесь:API Карт Google - отображение маркеров с разными значками

function create_marker(MapPos, eName, eDesc, eCateg, eDate, InfoOpenDefault, DragAble, Removable, iconPath) 
{ 
    //erase all existing markers 
    for (var i in event_markers) 
    { 
     event_markers[i].setMap(null); 
    } 

    //loop through each data row 
    $.each(data, function (i, MapPos) { 

     // Display the Icon by category 
     if(eCateg == 'meeting') 
     { 
      iconPath = 'static/assets/meeting_marker1.png'; 
     } 
     else if(eCateg == 'clean') 
     { 
      iconPath = 'static/assets/clean_marker2.png'; 
     } 
     else if(eCateg == 'priority') 
     { 
      iconPath = 'static/assets/alert_marker.png'; 
     } 

     var marker = new google.maps.Marker({ 
      position: MapPos, 
      map: map, 
      icon: iconPath, 
      title: eName 
     }); 

В настоящее время, он не показывать ничего, и я не уверен, что должен идти в «данные» здесь:

$.each(data, function (i, MapPos) { 

существующие сохраненные маркеры загружаются так:

$.get("event_data.php", function (data) { 
      $(data).find("marker").each(function() { 
        var name = $(this).attr('name'); 
        var description = '<p>'+ $(this).attr('description') +'</p>'; 
        var category = $(this).attr('category'); 
        var edate = $(this).attr('edate'); 
        var point = new google.maps.LatLng(parseFloat($(this).attr('lat')),parseFloat($(this).attr('lon'))); 
        create_marker(point, name, description, category, edate, false, false, false, "static/assets/new_event_marker.png"); 
      }); 
     }); 

ответ

0

Добавление этого в начале функции create_marker работал с отображением иконок в зависим г на категории:

// Display the Icon by category 
    switch(eCateg){ 
     case 'meeting': iconPath = 'static/assets/meeting_marker1.png'; break; 
     case 'clean' : iconPath = 'static/assets/clean_marker2.png'; break; 
     case 'special' : iconPath = 'static/assets/special_marker.png'; break; 
     case 'priority' : iconPath = 'static/assets/alert_marker.png'; 
    } 

Но теперь каждый информационный дисплей маркер, который сохраняется с последней строки, вставленной в базу данных

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