Добавление гиперссылок в Infowindow с использованием GMaps - PullRequest
0 голосов
/ 15 марта 2012

Я использую Wordpress и успешно отображаю карту на своем сайте с несколькими маркерами, используя GMaps.К сожалению, я надеялся, что «название места» будет гиперссылка на соответствующую запись на моем сайте.Однако по какой-то причине я не могу добавить гиперссылку на информационное окно, не разбив всю карту.

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

    $str = '';
    foreach($loop as $p){
    //get the meta and taxonomy data
    $name = strip_tags(get_the_term_list($p, "mountains"));
    $wtr_long = get_post_meta($p,"wtr_longitude",true);
    $wtr_lat = get_post_meta($p,"wtr_latitude",true);

    //Add to Array
    $map_string .= '{latitude: "' . $wtr_lat . '", longitude: "' . $wtr_long . '", html: "' . $name .'"},~!~';
    //$map_string .= '{latitude: "' . $wtr_lat . '", longitude: "' . $wtr_long . '", html: "name"},~!~';
    }

    //Remove last three "~!~" characters from the string not to have one too many arrays when exploding
    $clean_map_string = substr($map_string, 0, -3); 

    //Now I can use explode on ~!~ to get arrays with my string
    $map_array = explode('~!~', $clean_map_string);
    ?>                        




    <!--Map implementation-->
<div id="map" style="width:880px; height: 600px; background-color:grey;"></div>

<script type="text/JavaScript">                                                     
      $("#map").gMap({
                      scrollwheel: false,
                      maptype: G_PHYSICAL_MAP,
                      markers: [
<?php
    $i = 0;
    $length = count($map_array)-1;

//Inserts all the markers
    foreach($map_array as $value){
        if( $i != $length ){
            echo $value;
                            }
        else {
            echo str_replace("},", "}],", $value);
            }
            $i++;
                                }   
    ?>

                      popup: false,
                      zoom: 2 });             
   </script>

1 Ответ

0 голосов
/ 15 марта 2012

InfoWindows обычно не имеет проблем с тегами. Вы пытаетесь создать JSON-строку там, используйте json_encode() вместо этой смеси строковых функций, чтобы избежать недопустимых символов внутри строки.

<?php
    $markers=array();
    foreach($loop as $p){

      $markers[]=array(
                        'latitude'  =>  get_post_meta($p,"wtr_latitude",true),
                        'longitude' =>  get_post_meta($p,"wtr_longitude",true),
                        'html'      =>  get_the_term_list($p, "mountains")
                      ); 
    } 

?> 
<!--Map implementation-->
<div id="map" style="width:880px; height: 600px; background-color:grey;"></div>

<script type="text/JavaScript">                                                     
      $("#map").gMap({
                      scrollwheel: false,
                      maptype: G_PHYSICAL_MAP,
                      markers: <?php echo json_encode($markers);?>,
                      popup: false,
                      zoom: 2 });             
</script>
...