Окно маркера Google Map - PullRequest
       1

Окно маркера Google Map

0 голосов
/ 04 ноября 2011

Я пытаюсь добавить ссылку в окне маркера карты Google. Но мой код показывает только маркер и окно, но не показывает ссылку.

Я пытаюсь добавить ссылку в этой строке:

$marker['infowindow_content'] = "<?php echo anchor('index/get_by_id/$id',{$row->subject} on {$row->address}')?>";

когда ссылка нажата, она переходит к какой-либо функции моего контроллера индекса. но почему ссылка не появляется в окне.

Контроллер:

                   function index()
{


    if(empty($_POST)){
    $this->load->helper('form');
    $this->googlemaps->initialize();
    $marker = array();
    //$this->main_model->get_map();

    if($result = $this->main_model->ll()){
        //var_dump($result);
        foreach($result->result() as $row) {
            //var_dump($row);
            //$data[]=$row;
             $marker['position'] = "{$row->lat},{$row->lng}";
             $id=$row->id;
             $marker['infowindow_content'] = "<?php echo anchor('index/get_by_id/$id',{$row->subject} on {$row->address}')?>";

             $marker['animation'] = 'DROP';
             //var_dump($marker['position ']);
             $this->googlemaps->add_marker($marker);
        }
    }


    //$this->googlemaps->add_marker($marker);
    $data['map'] = $this->googlemaps->create_map();
    $data['list'] = $this->main_model->getdata();
    $this->load->view('main_view',$data);
} 


}

Модель:

 public function ll($id = '')
    {

    $sql = $this->db->get('info');
    if ($sql->num_rows () >0) {
        return $sql;
    }
    else{
        return null;

    }
          }

Сгенерированный html из моего кода (только часть карты):

        <script type="text/javascript">
        //<![CDATA[

        var map; // Global declaration of the map
        var iw = new google.maps.InfoWindow(); // Global declaration of the infowindow
        var lat_longs = new Array();
        var markers = new Array();
        function initialize() {

            var myLatlng = new google.maps.LatLng(65.84815, 24.14670);
            var myOptions = {
                zoom: 15,
                center: myLatlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP}
            map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

        var myLatlng = new google.maps.LatLng(65.85051,24.14529);

        var markerOptions = {
            position: myLatlng, 
            map: map,
            animation:  google.maps.Animation.DROP      
        };
        marker_0 = createMarker(markerOptions);

        marker_0.set("content", "<?php echo anchor('index/get_by_id/1',street problem on something home)?>");

        google.maps.event.addListener(marker_0, "click", function() {
            iw.setContent(this.get("content"));
            iw.open(map, this);

        });

        var myLatlng = new google.maps.LatLng(65.84931,24.14555);

        var markerOptions = {
            position: myLatlng, 
            map: map,
            animation:  google.maps.Animation.DROP      
        };
        marker_1 = createMarker(markerOptions);

        marker_1.set("content", "<?php echo anchor('index/get_by_id/2',hello on 11 some)?>");

        google.maps.event.addListener(marker_1, "click", function() {
            iw.setContent(this.get("content"));
            iw.open(map, this);

        });

        var myLatlng = new google.maps.LatLng(65.84858,24.14160);

        var markerOptions = {
            position: myLatlng, 
            map: map,
            animation:  google.maps.Animation.DROP      
        };
        marker_2 = createMarker(markerOptions);

        marker_2.set("content", "<?php echo anchor('index/get_by_id/3',problem street on 78900 street)?>");

        google.maps.event.addListener(marker_2, "click", function() {
            iw.setContent(this.get("content"));
            iw.open(map, this);

        });

        var myLatlng = new google.maps.LatLng(65.85000,24.14773);

        var markerOptions = {
            position: myLatlng, 
            map: map,
            animation:  google.maps.Animation.DROP      
        };
        marker_3 = createMarker(markerOptions);

        marker_3.set("content", "<?php echo anchor('index/get_by_id/4',gulshan street on 11 gulshan)?>");

        google.maps.event.addListener(marker_3, "click", function() {
            iw.setContent(this.get("content"));
            iw.open(map, this);

        });

        var myLatlng = new google.maps.LatLng(65.84620,24.14593);

        var markerOptions = {
            position: myLatlng, 
            map: map,
            animation:  google.maps.Animation.DROP      
        };
        marker_4 = createMarker(markerOptions);

        marker_4.set("content", "<?php echo anchor('index/get_by_id/5',broken road on banani)?>");

        google.maps.event.addListener(marker_4, "click", function() {
            iw.setContent(this.get("content"));
            iw.open(map, this);

        });

        var myLatlng = new google.maps.LatLng(65.84961,24.15164);

        var markerOptions = {
            position: myLatlng, 
            map: map,
            animation:  google.maps.Animation.DROP      
        };
        marker_5 = createMarker(markerOptions);

        marker_5.set("content", "<?php echo anchor('index/get_by_id/6',no lamp on arbritary)?>");

        google.maps.event.addListener(marker_5, "click", function() {
            iw.setContent(this.get("content"));
            iw.open(map, this);

        });


        }


    function createMarker(markerOptions) {
        var marker = new google.maps.Marker(markerOptions);
        markers.push(marker);
        lat_longs.push(marker.getPosition());
        return marker;
    }

        window.onload = initialize;

        //]]>

1 Ответ

0 голосов
/ 23 декабря 2012

Проблема с этой строкой:

$marker['infowindow_content'] = "<?php echo anchor('index/get_by_id/$id',{$row->subject} on {$row->address}')?>";

Содержимое InfoWindow представляет собой строку, содержащую фактический HTML-код. В вашем случае блок <?php игнорируется, как вы можете видеть в сгенерированном HTML:

marker_0.set("content", "<?php echo anchor('index/get_by_id/1',street problem on something home)?>");

Должно быть:

marker_0.set("content", "<a href='index/get_by_id/1'>street problem on something home</a>");

Попробуйте это:

<?php
    $subject = $row->subject;
    $address = $row_>address;
?>

var index = '<?php echo $id; ?>';
var subject = '<?php echo $subject; ?>';
var address = '<?php echo $address; ?>';

$marker['infowindow_content'] = "<a href='index/get_by_id/" + index + "'>" + subject + " on " + address + "</a>";
...