0

そのため、ユーザーが地図をクリックしたときにコードを書いています。座標値を取得し、texbox にバインド (値を表示) しようとします。私はそれをテストしました.座標とクリックイベントは機能しますが、テキストボックスへのバインドに問題があると思います. これを修正する方法について何か提案はありますか?

コード:

<script type="text/javascript" src="http://www.openlayers.org/api/OpenLayers.js"></script>
    <script type="text/javascript">
        OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
                    defaultHandlerOptions: {
                        'single': true,
                        'double': false,
                        'pixelTolerance': 0,
                        'stopSingle': false,
                        'stopDouble': false
                    },

                    initialize: function (options) {
                        this.handlerOptions = OpenLayers.Util.extend(
                                {}, this.defaultHandlerOptions
                            );
                        OpenLayers.Control.prototype.initialize.apply(
                                this, arguments
                            );
                        this.handler = new OpenLayers.Handler.Click(
                                this, {
                                    'click': this.trigger
                                }, this.handlerOptions
                            );
                    },

                    trigger: function (e) {
                        var lonlat = map.getLonLatFromPixel(e.xy);

                        alert("You clicked near " + lonlat.lat + " N, " +
                                                      +lonlat.lon + " E");
                        $('#latlon').value = lonlat;
                    }
                });
    </script>

そして、テキストボックスを定義する方法:

 <input type="text" name="coordinates" id="latlon" value="" Font-Names="Tahoma" Font-Size="10pt" Width="95%" />

エラーメッセージ:

Uncaught TypeError: Cannot set property 'value' of null 
OpenLayers.Control.Click.OpenLayers.Class.trigger
4

1 に答える 1

1

定義されていないvalueプロパティを使用しています。$('#latlon')使ってみて

$('#latlon').val(lonlat);それがjQueryでどのように機能するかです。

と の違いの詳細については、別のスタック オーバーフローの質問valueを参照してください。val()

jquery 関数 val() は "$(this).value=" と同等ではありませんか?

Openlayers.js ファイルをインクルードする前に次の行を追加します。これにより、jquery がコードにインクルードされます。

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>
于 2012-10-11T10:56:20.587 に答える