2012-03-02 4 views
0

У меня есть 3 маркера. Можно ли загрузить example1.html в div1 при нажатии на маркер1? и example2.html в Div1 для MARKER2 ..Google Maps API 3

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

ответ

0

Что я делаю, это добавить iframe внутри вашего div1. При этом я заменил третий элемент вашего массива myPoints на имя html-файла или гиперссылки, которую вы хотите. (Обратите внимание, что вы можете столкнуться с «запретом отображения» в параметрах x-frame, я получаю это с помощью 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> 
+0

thx dude .. он такой же, используйте .load для div или iframe .. – zippo

+0

, но я не понимаю, что есть «в нижней части страницы», map :) – zippo

+0

Я думаю, что это появилось, когда я хватал код jsfiddle. –

1

Попробуйте добавить страницу, которую вы хотите включить для каждого маркера в массиве 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

для вас? не для меня .. и thx для быстрого ответа. – zippo

+0

Я написал что-то не так: $ .get (marker.link, function (data) {вместо $ .get (marker.num, function (data) { Должен теперь работать – Natha