obeattie и gregers оба правы. В общем, вам нужно хранить параметры маркера в каком-то массиве, который вы позже будете использовать как минимум дважды:
- при добавлении наложения на карту
- при добавлении его в объект GLatLngBounds для вычисления центральной точки и уровня масштабирования
Массив или маркеры будут выглядеть как массив объектов, что-то вроде:
var latlng1 = [
new GLatLng( 48.1234, -120.1234 ),
new GLatLng( 48.5678, -120.5678 ),
new GLatLng( 48.9101, -120.9112 ),
new GLatLng( 48.1121, -120.1314 ),
new GLatLng( 48.3145, -120.1516 ),
new GLatLng( 48.1617, -120.1718 ),
new GLatLng( 48.1819, -120.1920 ),
new GLatLng( 48.2021, -120.2122 )
];
Код для добавления маркеров будет выглядеть примерно так:
// assume that map1 is an instance of a GMap2 object
// #0 -- google maps api requires us to call setCenter first before calling any other operation on the map
map1.setCenter( new GLatLng( 0, 0 ), 0 );
// #1 -- add markers
for ( var i = 0; i < latlng1.length; i++ )
{
var marker = new GMarker( latlng1[ i ] );
map1.addOverlay( marker );
}
// #2a -- calculate center
var latlngbounds = new GLatLngBounds( );
for ( var i = 0; i < latlng1.length; i++ )
{
latlngbounds.extend( latlng1[ i ] );
}
// #2b -- set center using the calculated values
map1.setCenter( latlngbounds.getCenter( ), map1.getBoundsZoomLevel( latlngbounds ) );
Что касается вашего вопроса об использовании серверного скрипта внутри клиентского JavaScript, да, вы можете смешать их вместе. Судя по твоему описанию, я думаю, это то, что тебе нужно сделать:
<script type="text/javascript">
var latlng1 = new Array( );
</script>
<script type="text/javascript">
<%
do until rs.eof
%>
latlng1.push( new GLatLng( parseFloat( '<%= rs( "Lat" ) %>' ), parseFloat( '<%= rs( "Lng" ) %>' ) ) );
<%
rs.movenext
loop
%>
</script>
Я разместил статью по адресу: http://salman -w.blogspot.com / 2009/03 / zoom-to-fit-all-markers-polylines-or.html