ページ(phpから動的に生成される)から緯度と経度の座標を取得して、Googleマップに配置しようとしています。これを行うための最良の方法はわかりませんが、それらを配列に配置し、クリックして再描画することが最良の方法のようです(はい?)
こちらのサイトを参照してください:http://yournextwebsite.se/riokultur/projekt
仕組みの一般的な前提は次のとおりです。ユーザーがチェックボックスを選択すると、プロジェクト(地図の下に表示)がカテゴリに基づいてフィルタリングされます。地図には、ページが読み込まれたときにすべての場所が表示される必要があります(緯度に基づく)。および長い座標)、ユーザーがフィルターをクリックしたときに表示/非表示にします。「アクティブ」クラスは、ユーザーのパラメーターに適合する各プロジェクトに追加されます。それらのアクティブなプロジェクトを返却して、マップに表示する必要があります。
これが私がこれまでに持っているコードです(地図を描画しますが、すべてのマーカーがないか、クリックで再描画します...ほとんどのコードはGoogleマップサイト自体から取得されます)
jQuery(document).ready(function($){
function initialize() {
var myLatlng = new google.maps.LatLng(57.68066002977235, 11.9091796875);
var mapOptions = {
zoom: 8,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
var contentString = '<div id="content">Content</div>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Uluru (Ayers Rock)'
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
function redraw(lat, long) {
//add a new location for each lat/long pair
var newLatLong = new google.maps.LatLng(lat, long);
var mapOptions = {
zoom: 8,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
var contentString = '';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: newLatlng,
map: map,
title: ''
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
initialize();
//start latitudes array
var latitudes = [];
//start longitudes array
var longitudes = [];
$('form div input').click(function(){
//loop through active elements when a checkbox is selected/deselected
$('p.active.filter-result').each(function(){
//finds the active elements latitude
var latitude = $(this).children('.latitude').text();
//finds the active elements longitude
var longitude = $(this).children('.longitude').text();
//if the latitude is set, add it to the array
if (latitude) latitudes.push(latitude);
//if the longitude is set add it to the array
if (longitude) longitudes.push(longitude);
});
//redraw the map...
for(i=0; i<latitudes.length; i++) {
redraw(latitude, longitude);
}
});
});