GoogleMapAPI

que_bunt

Новичок
GoogleMapAPI

Здраствуйте!

вопрос к тем кто работал с GoogleMapAPI:

есть сайт с картой от гугля
на карте есть несколько десятков маркеров, а справа в таблице есть фото тех мест на которые указывают эти маркеры.
если "Zoom in" то некоторые маркеры остають поза новым окном. а как можно сделать так чтобы фото тех маркеров которые исчезают тоже исчезали.
или если делаем "Zoom out" и добавляются маркеры то подгружаются новые картинки?

тоесть необходимо показывать только те фото маркеры которых находятся на просматриваемом участке карты.

как на http://www.panoramio.com

спасибо.
надеюсь на помощь.

-~{}~ 13.01.06 23:54:

Я так подумал, возможно тут мало людей которые работали с GoogleMapApi, и может мне скорее помогут люди которые просто хорошо знают пхп и JavaScript.

Обясню детальней что мне нужно:
с главной страницы ява-скрипт обращается к Google за картой с указанием точки центра вокусировки(в широте и долготе) и коефициента приближения. Google отдает картинку, которая начинается грузится в браузера. картинка умеет такие свойства как максимальные и минимальные шыроты и долготы даной карты (тоесть верхнее левое значение и нижнее правое) - свойство можно узнать с помощью ява-скрипт.

А в нас в MySQL базе имеются записи мест(людей) с фото и координатами(широта,долгота).
И надо сбоку в таблице вивести только те фото координаты которых имеются на загруженой части карты.

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

Такая вот проблема. Думаю что понятно обяснил.

Думаю есть два варианта:
1)Возможно мне надо перехвативать как-то ответ гугля(но как?), обрабатывать, получая нужные координаты в пхп-скрипт, а потом выдавать страницу уже с таблицей фоток и с ява скриптом который снова запросит с Google ту же часть карты, запрос на которую я перехватил, но теперь я уже его не перехвачиваю? - как-то даже невозможно обяснить, не то что понять и сделать.
2)ява-скрипт вовремя загрузки карты как-то(как?) передает нужные параметры пхп-скрипту, который и подгружает табл. с нужными фотками - это более реалистичный вариант, но не знаю как его организировать, на ум приходит разве что подгрузка табл. в фрейм, то это не очень походит.

впринципе алгоритм такой же как на panoramio.com, но как же они это сделали, вот интересно!

Что посоветуете господа?
 

Nirva

Dmitry Polyakov
1) А разве если ты знаешь центр, коэффициент приближения и показываемую область ты не можешь высчитать координаты?
2) тебе поможет ajax.
 

que_bunt

Новичок
Спасибо, перед тем как запостить нашол это в поиске, но подумал что это не то, теперь посмотрел детальней - нашол много интересных мест, где все организировано лучше чем в моих скриптах по работе с GoogleMapAPI. Но все же проблему это не решило.

Но вот отдельное огромное спасибо Nirva! за
тебе поможет ajax.
Это именно то что я искал.

-~{}~ 14.01.06 20:30:

но вот, осталась проблема которую не могу решить.

какая-то ошыбка в самом аяксе
в том месте где делаю
Код:
<?php sajax_show_javascript(); ?>
аякс вставляет свой ява-скрипт код, но потом в браузере получаю ошыбку:
Код:
Error: args[args.length - 1] is not a function
Source File: http://maxivanov.jino-net.ru/googlemaps/
Line: 78
-~{}~ 15.01.06 16:51:

оказалось, что эта ошыбка происходит если не использывать callback функцыю.


но у меня вот ещо вопрос:
если я получаю от пхп-скрипта не стандартный html-content, а операторы ява-скрипт, то как сделать что б они исполнились?

думал если сделаю document.write(result); в середине тегов <script></script> то браузер все исполнит эти операторы, но они просто виводятся в документ, как же поступить?
 

magic

lancer
Покажи, что выводится. Тогда будет ясно, как это исправить.
 

que_bunt

Новичок
Вот пхп код функции которая выводит ява-скрипт через аякс:
Код:
require("Sajax.php");
include('config2.php');
function marker_php($maxX,$maxY,$minX)
{	
	connect_db();
	$code='';
	$sql="SELECT * FROM geotest WHERE lt<'".$maxX."' AND lt>'".$minX."' AND ln<'".$maxY."'";
	if (! $mysql_result=mysql_query($sql)) return mysql_error();
	while ($row=mysql_fetch_array($mysql_result)) {
		$code.="var point=new GPoint({$row['lt']},{$row['ln']});\n"."var marker = CreateMarker(point,'{$row['id']}');\n";}
	mysql_close();
	return $code;
}
$sajax_request_type = "GET";
//Инициализируем Sajax
sajax_init();
//Экспортируем в JavaScript следующие PHP-функции
sajax_export("marker_php");
sajax_handle_client_request();
вот ява-скрипт который обрабатывает этот результат пхп-функции
Код:
<script type="text/javascript">
<?php sajax_show_javascript(); ?>
var sidebar_html;
function AjaxDo() { 
	x_marker_php(90,70,0,set_result); }
function set_result(result) { 
	document.write(result);}
AjaxDo();
</script>
а получаем не исполнение ява-операторов возвращаемых пхп функцией marker_php(), а прямой вывод в браузер этого кода
Код:
var point=new GPoint(58.0779,56.4258); var marker = CreateMarker(point,'1'); var point=new GPoint(59.0379,55.2558); var marker = CreateMarker(point,'2');
вот вопрос в том на что надо заменить document.write(result); чтоб код выполнился, а не вывелся в браузер?
 
Сверху