Маркеры появляются в случайное время - PullRequest
0 голосов
/ 23 февраля 2011

Я пытаюсь создать карту с 3 различными маркерами, но в настоящее время каждый из них появляется в случайное время. Я думаю, что это проблема с асинхронностью.

Здесь находится тестовый URL, и карта отображается внизу страницы: http://www.comehike.com/hikes/hike_carpool.php?hike_id=125

Кто-нибудь знает, что я делаю не так?

Спасибо, Alex

1 Ответ

1 голос
/ 23 февраля 2011

Вы имеете в виду, что ваши маркеры рисуются в разное время, например в начале вы видите красный, затем желтый, а затем синий. В следующий раз, когда вы загрузите страницу, вы заметите сначала синий маркер, затем желтый, а затем красный. Я правильно понял ваш вопрос? Если да, то все равно :) Это зависит от сетевого подключения, загрузки сервера и т. Д. Например. посмотрите на вкладку Net в FireBug, я впервые получил:

enter image description here

, поэтому браузер начал запрашивать smile.gif и car.jpg одновременно, через некоторое время запросили marker_sprite. На самом деле вы видите, что maps.google.com обрабатывает запрос быстрее (хотя запрос начался позже). Затем ваш сервер (comehike.com) обработал запрос для car.jpg (хотя он и большой, 1,3 КБ), а затем приходит smile.gif (хотя его размер составляет всего 174 Б, и это было первое запрошенное изображение).

В следующий раз я нажал F5 и получил изображения из кэша браузера, но браузер отправил несколько запросов, чтобы узнать, действительно ли они не были изменены:

enter image description here

обратите внимание, что браузер начал запрашивать информацию о car.jpg довольно рано, но из-за времени соединения и ожидания результата потребовалось много времени для его получения (хотя он кэшируется, поэтому браузеры просто ждут подтверждения). И снова maps.google.com обрабатывает запрос быстрее, чем comehike.com.

Так что это не ajax, это зависит от того, когда браузер будет запрашивать изображение, и от того, насколько быстро сервер его обработает (и это зависит от его очереди и т. Д.).

Если вы хотите, чтобы все маркеры отображались одновременно, вам нужно использовать CSS-спрайты и объединить все изображения маркеров в одно. Посмотрите (любая статья хороша):

  1. CSS-спрайты: что это такое и почему Они крутые и как их использовать Их
  2. CSS-спрайты: поцелуй нарезки изображений смерти
  3. Тайна CSS-спрайтов: Техника, инструменты и учебные пособия

таким образом у вас будет одно изображение вместо трех, поэтому при загрузке браузер отобразит все маркеры (по крайней мере, вы не заметите, что между рисованием маркера есть задержка). Надеюсь, что это объясняет и помогает.

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