2012-07-18 19 views
5

Mam obraz (obraz jest planem piętra dla budynku), a obraz zawiera różne pokoje, które mogą być otwarte lub zarezerwowane. Użyłem Imagemap i hotspotów do mapowania współrzędnych pomieszczeń i obsługuję zdarzenia onclick, aby zrobić to, czego potrzebuję, aby je zrealizować. Problem polega na tym, jak mogę pokolorować współrzędne hotspotu po zarezerwowaniu pokoju? Śledzę zarezerwowane pokoje w mojej bazie danych, więc nie ma problemu ze świadomością, który pokój jest zarezerwowany, ale problemem jest brak właściwości koloru dla hotspotów. Jaki jest najlepszy sposób na rozwiązanie tego problemu? JavaScript?Jak pokolorować hotspoty asp w imagemap?

Wiem, że mogę zamienić obrazy na kliknięcia i inne, ale są setki pokoi i stratą czasu byłoby mieć tyle zdjęć dla każdej możliwości zarezerwowanych/niezarezerwowanych pokoi.

Odpowiedz

0

HTML5 ma rysunek proceduralnego poprzez canvas

+0

Wielką odpowiedź, ale nie mam problem rysunek, jeśli muszę zrobić to po stronie serwera, a nie po stronie klienta? Muszę mieć dostęp do mojej bazy danych, więc na pageload, pokoloruj pokoje, które są zarezerwowane. –

+0

Aha, to za pomocą gdi + będzie droga. wstawi przykład rano, jeśli nikt inny nie dostanie się do mnie przed mną –

2

Nie mów jQuery, ale na pewno byłoby łatwiej, niż zaczynać od zera. Wtyczka jQuery to zrobić:

http://www.outsharked.com/imagemapster/

Twój dostęp do bazy danych jest kwestią nieco czerwonego śledzia. Nie ma powodu, aby serwer nie mógł przekazać danych potrzebnych jako część znaczników podczas ładowania strony, np.

<script type="application/json" id="map-data"> 
    [1,2,10,33] 
</script> 

.. lub jakikolwiek format/struktura/typy danych są dla Ciebie przydatne. Nie musisz używać bloku script - możesz umieścić go w ukrytym div, to naprawdę nie ma znaczenia. Nie musisz też używać JSON, to jest po prostu wygodne. Następnie możesz użyć tych danych jako danych wejściowych do czegoś podobnego do ImageMapster, aby podświetlić potrzebne obszary. Po prostu ukryj obraz, dopóki nie skończysz go konfigurować, a jeśli użytkownik końcowy kiedykolwiek zobaczy, to w jaki sposób został załadowany z serwera.

Przykład podjęcie pewnych danych ze znaczników i używając go ustawić hotspotów na imagemap użyciu ImageMapster:

http://jsfiddle.net/jamietre/hD6bM/

+0

Myślę, że to działa w tym samym problemie z koniecznością dostępu do mojej bazy danych i zmiany kolorów w pokoju przy ładowaniu strony ... w jaki sposób to zrobić po stronie serwera? –

+0

Oczywiście istnieje sposób, aby zrobić to po stronie serwera, ale prawdopodobnie wymagałoby to ogromnej pracy przy użyciu GDI + lub podobnych, aby faktycznie rysować obrazy. Wymagałoby to również od użytkowników końcowych pobierania całkowicie nowego obrazu za każdym razem, gdy wchodzili na stronę, która z jego brzmienia mogłaby być dużym obrazem. Wymieniasz jeden problem na inny. JavaScript jest w dzisiejszych czasach bardzo cholernie szybki, nie ma powodu, by przewidywać problem z wydajnością robiąc to na kliencie. Nie musisz wysyłać specjalnych żądań do bazy danych, po prostu przekazuj dane podczas ładowania strony jako JSON i zlecaj klientowi renderowanie za jego pomocą. –

+0

Zaktualizowałem moją odpowiedź na przykładzie tego, jak można wykorzystać dane przekazane z serwera. –