0

新しい問題があります。

ウィジェットは既に作成しましたが、データベース内の 5 つのカテゴリに対して 5 つの評価ウィジェットが必要です。

データベースにこの列があります (places.categ という名前):

places.categ
       a
       b
       c
       d
       a
       e
       ....

Google マップには 21 個のマーカーがあり、それぞれがカテゴリになっています。(a、b、c、d または e)。

カテゴリ別に 5 つの評価ウィジェットを 21 個のマーカーに関連付けるにはどうすればよいですか? 私ができることはこれだけでした:

db.define_table('product',
Field('A', 'integer',requires=IS_IN_SET(range(1,6))), 
   Field('B', 'integer',requires=IS_IN_SET(range(1,6))),
   Field('C', 'integer',requires=IS_IN_SET(range(1,6))),
   Field('D', 'integer',requires=IS_IN_SET(range(1,6))),
   Field('E', 'integer',requires=IS_IN_SET(range(1,6))))

models/db.py に次のコードがあり、controllers/default.py に次のコードがあります。

from plugin_rating_widget import RatingWidget

# Inject the widgets
db.product.A.widget = RatingWidget()
db.product.B.widget = RatingWidget()
db.product.C.widget = RatingWidget()
db.product.D.widget = RatingWidget()
db.product.E.widget = RatingWidget()




# form2 = SQLFORM.factory(
   # Field('Rating','integer',widget=SQLFORM.widgets.RatingWidget))

   # if form2.process().accepted:
   #     print form2.vars.search



form2 = SQLFORM(db.product)
if form2.accepts(request.vars, session):
    session.flash = 'submitted %s' % form2.vars
    redirect(URL('index'))

私は 5 つの評価ウィジェットを持っていますが、それらは私のデータベースに関連付けられておらず、縦 (5 行) であり、私も望んでいたように 1 行ではありません。

ティア。

PS: プラグイン評価ウィジェットをアップロードしました。

4

1 に答える 1

0

別の方法で解決しました。このコードを使用して、各カテゴリの色を取得します。

var amarelo = new google.maps.MarkerImage(
  "http://labs.google.com/ridefinder/images/mm_20_yellow.png",
  new google.maps.Size(12, 20),
  new google.maps.Point(0, 0),
  new google.maps.Point(6, 20));
var vermelho = new google.maps.MarkerImage(
  "http://labs.google.com/ridefinder/images/mm_20_red.png",
  new google.maps.Size(12, 20),
  new google.maps.Point(0, 0),
  new google.maps.Point(6, 20));
var verde = new google.maps.MarkerImage(
  "http://labs.google.com/ridefinder/images/mm_20_green.png",
  new google.maps.Size(12, 20),
  new google.maps.Point(0, 0),
  new google.maps.Point(6, 20));
var azul = new google.maps.MarkerImage(
  "http://labs.google.com/ridefinder/images/mm_20_blue.png",
  new google.maps.Size(12, 20),
  new google.maps.Point(0, 0),
  new google.maps.Point(6, 20));
var branco = new google.maps.MarkerImage(
  "http://labs.google.com/ridefinder/images/mm_20_white.png",
  new google.maps.Size(12, 20),
  new google.maps.Point(0, 0),
  new google.maps.Point(6, 20));
var sombra = new google.maps.MarkerImage(
  "http://labs.google.com/ridefinder/images/mm_20_shadow.png",
  new google.maps.Size(22, 20),
  new google.maps.Point(0, 0),
  new google.maps.Point(6, 20));

この色のいずれかで各カテゴリを授与しました (例):

if (placescoordjs[i][4]== 'a')
    {
    marker = new google.maps.Marker({
        position: new google.maps.LatLng(placescoordjs[i][1],placescoordjs[i][2]),
        icon: amarelo, shadow: sombra,
        map: map,
        title: placescoordjs[i][3]
    });
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
            infowindow.setContent(placescoordjs[i][0]);
            infowindow.open(map, marker);
        }
    })(marker, i));
     }

さらに 3 つの「else if」と、最後のカテゴリの最終的な色を持つ最後の else があります。

とにかくありがとう。;)

于 2013-06-24T16:48:12.860 に答える