2011-08-19 29 views
6

Điều này thực sự gây lỗi cho tôi - rất nhiều.tại sao google infoWindow của CSS không được hiển thị? tùy biến quá khó

Sau khi lội qua bản đồ google v3 tạo mã phía khách hàng trong firebug, tôi sắp sẵn sàng để lái xe xuống đường phố và đưa ra một số những kỹ sư một mảnh tâm trí của tôi ... arrrgh: P

Các infowWindow lớp sản xuất HTML mà cá nhân tôi sẽ nghĩ chỉ đơn giản là các loại hạt. có thể ai đó có thể giúp tôi hiểu được nó.

Cấu trúc infowWindow HTML là như thế này:

#map_canvas > div > div > div > div > div // 5 levels of elements, 
no big deal here, ok... 
> div // top left corner 
div // top right corner 
div // bottom left corner 
div // bottom right corner 

// now comes fun stuff for the speech bubble arrow: 

div 
div 
div 
div 
div 
div 
div 
div 
div 
div 

// the 10 divs above are stacked diagonally with odd sizes to make this arrow. 
i'm sorry but WHY?!? is it done like that? I suppose they wanted the user to be 
able to grab the map even right next to the arrow. Think about this: do users 
really need to be able to not grab the arrow? if grabbing the arrow causes map pan, 
as is the case for the shadow images, would that really be a problem? 

div // bottom middle for image background border or something 
div // top middle 
div // middle 
div // bottom middle, again 
div // entire block of the infoWindow, probably the container 
> img // close box 
div // center block with the contents of the infoWindow 
div // text content container 

WOW - hạt thats!

thông báo không có cấu trúc ngữ nghĩa thực, và - gosh, tôi dám có giả định - không có tên lớp ở đâu, không có gì. Tôi nghĩ rằng có thể họ có một số loại hộp 9-inchđang diễn ra và sau đó tạo ra mũi tên riêng biệt; Ý tôi là, hình ảnh sprite trong iw3.png chắc chắn sẽ không phải là vấn đề ở đây.

Tôi rất hy vọng ai đó có ảnh hưởng đến api này sẽ vượt qua điều này và hy vọng Google cuối cùng sẽ tìm ra cách để giải quyết vấn đề này như hình ảnh thông minh thông tin trực quan.

Cảm ơn bạn đã điều chỉnh! bình luận vui vẻ.

trong khi đó tôi sẽ sử dụng hack để truy cập vào các div ảo này và khiến họ thực hiện đặt giá thầu của tôi.


trước đó tôi nhận xét về một số bài khác và tôi nghĩ rằng nó không nên quá nhiều để yêu cầu một phương pháp trong các API cho phép bạn sử dụng giao diện người dùng tùy chỉnh mà không cần đến một gần như trùng lặp của đối tượng toàn bộ cửa sổ hiện tại là cần thiết (xem các lớp mở rộng của google v3).

google.maps.infoWindow.setStyle({ 
    'topleft' : { 
    'background' : 'url(images/windowsprite.png) 0 0 no-repeat', 
    'width' : '10px', 
    'height' : '10px' 
    }, 
    'topRight' : { 
    ...etc... 
    } 
    ...etc... 
}) 

Trả lời

1

Các bạn đã thử hộp thông tin?

http://googlegeodevelopers.blogspot.com/2010/04/infobox-10-highly-customizable.html

hoặc InfoBubble?

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobubble/examples/example.html/

Cả hai đều cung cấp cho bạn kiểm soát nhiều hơn một chút so với sự xuất hiện của infowindows, trong khi vẫn trừu tượng hóa một số trong những phần phức tạp.

Việc thiếu các lớp học về các yếu tố là quyết định thiết kế (tốt) cho một API. Nó giúp loại bỏ khả năng xung đột với các lớp do người dùng định nghĩa.

+1

yea Tôi đã thử cả hai nhưng mệt mỏi vì nó có rất nhiều chức năng lặp lại trong một thư viện lớn chỉ vì vậy tôi có thể làm cho một số adustments CSS đơn giản. Tôi chỉ mong đợi một API của Google hiển thị CSS hộp là thuộc tính có thể đặt trước. Đối với các lớp học, tôi không nghĩ rằng đó sẽ là một vấn đề với một tiền tố đơn giản. – tim

1

Sau nhiều lần thử và xóa, tôi quyết định cách tốt nhất để giải quyết vấn đề này là sử dụng lớp OverlayView và chỉ cần tùy chỉnh tạo vùng chứa. Vâng, "đơn giản" là một cách nói, nhưng nó hoạt động. Và bây giờ tôi có toàn quyền kiểm soát bố cục và chức năng.

Các vấn đề liên quan