2017-09-21 4 views
0

私は複数のマーカーピンを追加している画像があります。そして、後でデータベースの位置(x座標とy座標)を保存しています。ここで画像上の特定の座標の値を表示

は今までの私のコードです: https://jsfiddle.net/at3wsepm/7/

は、ユーザーが保存ボタンをクリックした後、ピン名がデータベースに保存されていると一緒にコーディネート。私は必要なもの

_this.position.x = _this.element.position().left; 
_this.position.y = _this.element.position().top; 

は、ユーザーがページをリロードするとき、私は私のデータベースからこれらのマーカーの位置を取得し、同じ画像上に再びそれを配置したい、です。私はPHPを使って検索を行い、ピンとその座標をJSONとして取得することができますが、どうやってイメージ上に再び配置できますか?

答えて

1

データの保存と取得の正確さにもよりますが、データベースのX座標とY座標をJavaScriptに戻すことができると仮定すると、lefttopを設定する必要があります属性は.cssです。これが機能するには、static以外のpositionも設定する必要があります。

$("#carea").append(elem.css({ 
    position: "relative", // `left` and `top` require a `position` other than `static` 
    left: databaseX, // The pin's X coordinate in the database 
    top: databaseY // The pin's Y coordinate in the database 
})); 

これはhereを見ることができるように、データベースの値によって指定された位置にバックグラウンドにピンを追加します。

これは、ページロード時にマップ要素の左上を基準にして指定された位置にピンを追加することに注意してください。;指定された座標がマップの外にある場合、その要素の外側に表示されます。マップはそのスクロール内でそれらを非表示にしません。

希望すると便利です。 :)

+0

データをJSON形式で取得しています [{"" x ":165、" y ":100、"ピン ":" S27 "}、{" x ":447、" y " :215、 "pin": "S16"}、{"x":189、 "y":336、 "pin": "S17"} ピン名(S27、S16、S17)をオンにする必要がありますそれらの特定の座標。 – NoMadic

+0

はforループを使用してjsonを通して反復処理を試み、 'carea'に追加されました。しかし、それは配置されていません。 ' // axisDataはJSONデータです for(axisDataのvarキー) { var els ="

"+axisData[key].sensor+"
"; \t var要素= $(els).addClass( "sdetails"); \t \t $( "#1 CAREA")付加(element.css({ 左:axisData [キー] .X、//ピンのXは、データベース トップ座標:axisData [キー] .Y //データベースのピンのY座標 })); 「 」 – NoMadic

+1

ああ!謝罪いたします;要素にポジションを追加するのを忘れてしまった。彼らはスタイルが正しく追加されていますが、**配置されていません**。単に「position:」relative「」を追加すると、[** here **](https://jsfiddle.net/d1bemdL6/)に見られるように、これが修正されます。私はそれをカバーする答えを更新しました。また、あなたのJSONは、少なくともあなたのコメントに書かれているように、**無効**と思われます。 [** JSONLint **](http://www.jsonlint.com)で正しいことを確認できます:) –

関連する問題