Google Maps API 3 - PullRequest
       2

Google Maps API 3

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

У меня есть 3 маркера. Могу ли я загрузить example1.html в div1 при нажатии на marker1? и example2.html в div1 для маркера 2 ..

вот мое модифицированное демо @ kjy112 http://jsfiddle.net/rD8U6/198/

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Попробуйте добавить страницу, которую вы хотите включить для каждого маркера в массиве myPoints, например:

var myPoints = [[43.65654, -79.90138, 'ABC','exemple1.html'],[43.91892, -78.89231, 'DEF','exemple2.html'],[43.82589, -79.10040, 'GHA','mypage.html']];  //create global array to store points

Затем при цикле myPoints:

for(var i=0; i<myPoints.length; i++){
     createMarker(new google.maps.LatLng(myPoints[i][0], myPoints[i][1]), myPoints[i][2], myPoints[i][3]);
}

Затем в функции createMarker:

function createMarker(latlng, html,link) {
var contentString = html;
var marker = new google.maps.Marker({
    position: latlng,
    map: map,
    num: link
});  

google.maps.event.addListener(marker, 'click', function() {
    infowindow.setContent(contentString);
    infowindow.open(map, marker);
    map.panTo(latlng);
    $.get(marker.num, function(data) {
     $('#div1').html(data);
    });
    $('#div1').show();
});

markerArray.push(marker); //push local var marker into global array
}
0 голосов
/ 02 марта 2012

Что я делаю, так это добавление iframe внутри вашего div1.После этого я заменил третий элемент массива myPoints на имя html-файла или гиперссылки, которую вы хотите.(Обратите внимание, что вы можете столкнуться с «показом запрещенного» в x-frame-options, я получаю это с google.com и не могу поместить его в div / iframe).Он должен работать внутри вашего собственного домена.

Создайте два (простых) статических htmls, которые называются static_a.html и static_b.html, чтобы протестировать приведенный ниже код.Средний маркер должен перейти на домашнюю страницу Нью-Йоркского университета.

При наличии ссылки на каждый маркер div изменяется косвенно, по сравнению с изменением в src iframe с $("#myiframe").attr('src', html); в прослушивателе кликов маркера.

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
    html, body {
      margin:0px;
      padding:0px;
      height:100%;
    }
    #map_canvas {
      width:500px;
      height:100%;
    }
    #div1 {
      background-color:#0FC;
      width:300px;
      height:100%;
      position:absolute;
      right:0px;
      top:0px;
      display:none;
    }
    </style>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
var map = null;
var markerArray = []; //create a global array to store markers
var myPoints = [[43.65654, -79.90138, 'static_a.html'],
                [43.91892, -78.89231, 'static_b.html'],
                [43.82589, -79.10040, 'http://www.nyu.edu']];  //create global array to store points

function initialize() {
    var myOptions = {
        zoom: 8,
        center: new google.maps.LatLng(43.907787, -79.359741),
        mapTypeControl: true,
        mapTypeControlOptions: {
            style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
        },
        navigationControl: true,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
    });

    // Add markers to the map
    // Set up markers based on the number of elements within the myPoints array
    for(var i=0; i<myPoints.length; i++) {
         createMarker(new google.maps.LatLng(myPoints[i][0], myPoints[i][1]), myPoints[i][2]);
    }

    //mc.addMarkers(markerArray , true);
}

var infowindow = new google.maps.InfoWindow({
});

function createMarker(latlng, html) {
    var contentString = html;
    var marker = new google.maps.Marker({
        position: latlng,
        map: map
    });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString);
        infowindow.open(map, marker);
        map.panTo(latlng);
        $("#div1").show();
        $("#myiframe").attr('src', html);

    });

    markerArray.push(marker); //push local var marker into global array
}
    </script>
  </head>
  <body onload="initialize()">
<div id="map_canvas"></div>
<div id="div1"><iframe id="myiframe" style="width: 100%; height: 100%"></iframe>
</div>

  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...