Oto kilka nowości (mam nadzieję, że lepiej jest umieścić je tutaj w odpowiedzi, zamiast edytować moje pytania lub utworzyć nowe pytanie.) W razie potrzeby możesz je przenieść lub powiedzieć, tak jak ja można skorygować):
Mój problem był następujący:
var oldmap = new GGroundOverlay("test.svg", boundaries);
map.addOverlay(oldmap);
nie działa na Safari 3, Firefox i Opera (IE nie pozwalają wyciągnąć SVG).
W rzeczywistości, to kod produkują wstawiania (w <div>
) następujących elementów
<img src="test.svg" style=".....">
i Safari 4 jest w stanie wyciągnąć plik SVG jako obraz, ale nie jest to sposób, aby zrobić dla drugiej przeglądarki. Więc pomysł polega teraz na stworzeniu niestandardowej nakładki na SVG, jak wyjaśnił here.
To jest powód, dla którego poprosiłem o this question (Przykro mi, ale HTML/javascript nie są moje najsilniejsze punkty).
A ponieważ jest tam mały błąd z Webkit do renderowania SVG z przezroczystym tłem z <object>
elementu, muszę korzystać <object>
lub <img>
odpowiednio do przeglądarki (nie lubię tego, ale w tej chwili ... , to nadal szybki i brzydka eksperymenty)
zacząłem więc z tego kodu (wciąż w toku):
// create the object
function myOverlay(SVGurl, bounds)
{
this.url_ = SVGurl;
this.bounds_ = bounds;
}
// prototype
myOverlay.prototype = new GOverlay();
// initialize
myOverlay.prototype.initialize = function(map)
{
// create the div
var div = document.createElement("div");
div.style.position = "absolute";
div.setAttribute('id',"SVGdiv");
div.setAttribute('width',"900px");
div.setAttribute('height',"900px");
// add it with the same z-index as the map
this.map_ = map;
this.div_ = div;
//create new svg root element and set attributes
var svgRoot;
if (BrowserDetect.browser=='Safari')
{
// Bug in webkit: with <objec> element, Safari put a white background... :-(
svgRoot = document.createElement("img");
svgRoot.setAttribute("id", "SVGelement");
svgRoot.setAttribute("type", "image/svg+xml");
svgRoot.setAttribute("style","width:900px;height:900px");
svgRoot.setAttribute("src", "test.svg");
}
else //if (BrowserDetect.browser=='Firefox')
{
svgRoot = document.createElement("object");
svgRoot.setAttribute("id", "SVGelement");
svgRoot.setAttribute("type", "image/svg+xml");
svgRoot.setAttribute("style","width:900px;height:900px;");
svgRoot.setAttribute("data", "test.svg");
}
div.appendChild(svgRoot);
map.getPane(G_MAP_MAP_PANE).appendChild(div);
//this.redraw(true);
}
...
funkcja draw
nie jest jeszcze napisane.
Nadal mam problem (postępuję powoli, dzięki temu, co czytam/uczę się wszędzie, a także dzięki ludziom, którzy odpowiadają na moje pytania).
Problem jest następujący: z tagiem <object>
mapa nie jest przeciągalna. W całym elemencie <object>
wskaźnik myszy nie jest "ikoną ręki", aby przeciągnąć mapę, ale zwykłym wskaźnikiem.
I nie znalazłem sposobu, aby to poprawić. Czy powinienem dodać nowe zdarzenie myszy (widziałem zdarzenie myszy po kliknięciu lub dwukrotnym kliknięciu, ale nie w celu przeciągnięcia mapy ...)?
Czy istnieje inny sposób dodania tej warstwy, aby zachować zdolność przeciągania?
Dziękuję za uwagi i odpowiedzi.
PS: Próbuję też dodawać po jednym elementy mojego SVG, ale ... w rzeczywistości ... Nie wiem, jak dodać je do drzewa DOM. W pliku this example, SVG jest odczytywany i analizowany przy pomocy GXml.parse()
, a wszystkie elementy o danej nazwie znacznika są uzyskiwane (xml.documentElement.getElementsByTagName
) i dodawane do węzła SVG (svgNode.appendChild(node)
). Ale w moim przypadku muszę dodać bezpośrednio drzewo SVG/XML (dodać wszystkie jego elementy) i istnieją różne znaczniki (<defs>
, <g>
, <circle>
, <path>
itd.). To może być prostsze, ale nie wiem jak to zrobić .. :(
Co za świetne pytanie. Mam przeczucie, że twoje drugie podejście się nie sprawdzi, ale wahasz się odpowiedzieć bez potwierdzenia, jak wygląda gmaps przy tej objętości polilinii. Nie mogę się doczekać, aby zobaczyć, jak to się dzieje. – RedBlueThing
Czy GGroundOverly może wykorzystywać obrazy tła CSS? FF nie obsługuje (jeszcze 3.5 woli) SVG jako tła. – Boldewyn
Próbowałem tylko z FF 3.5, ale to też nie działa. W rzeczywistości, gdy patrzę na pobrane media (Narzędzia/Informacje o stronie/Media), mój SVG nie jest w ogóle załadowany ... – ThibThib