2016-07-16 10 views
0

以下は私のコードです。これは正常に動作していますが、私はどのようにマーカーのonClickのポップアップを与えるか知りたいですか?マーカーの内容はPHPを使ってmysqlデータベースから動的に取得することを示したいと思いますが、ここでは各マーカーごとに異なるポップアップを与える方法を知りたいのですが?openlayersのマーカークリックでポップアップを表示3

<div id="mapdiv"></div> 

<script src="http://www.openlayers.org/api/OpenLayers.js"></script> 
<script> 
map = new OpenLayers.Map("mapdiv"); 
map.addLayer(new OpenLayers.Layer.OSM()); 

epsg4326 = new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection 
projectTo = map.getProjectionObject(); //The map projection (Spherical Mercator) 

var lonLat = new OpenLayers.LonLat(13.0161, 22.2845).transform(epsg4326, projectTo); 

var markers = new OpenLayers.Layer.Markers("Markers"); 
map.addLayer(markers); 
var cmark = [13.0161, 22.2845]; 
markers.addMarker(new OpenLayers.Marker(lonLat));  

var zoom=8; 
map.setCenter (lonLat, zoom); 

var vectorLayer = new OpenLayers.Layer.Vector("Overlay"); 

// Define an array. This could be done in a seperate js file. 
// This tidy formatted section could even be generated by a server-side script (jsonp) 
var markers = [ 
    [ 73.0161, 26.2845 ], 
    [ -0.1244324, 51.5006728 ], 
    [ -0.119623, 51.503308 ] 
]; 

//Loop through the markers array 
for (var i=0; i<markers.length; i++) { 

    var lon = markers[i][0]; 
    var lat = markers[i][1]; 

    var feature = new OpenLayers.Feature.Vector(
      new OpenLayers.Geometry.Point(lon, lat).transform(epsg4326, projectTo), 
      {description: "marker number " + i} , 
      {externalGraphic: 'marker.png', graphicHeight: 25, graphicWidth: 21, graphicXOffset:-12, graphicYOffset:-25 } 
     );    
    vectorLayer.addFeatures(feature); 
}       
map.addLayer(vectorLayer); 
</script> 
+0

あなたのコードはopenlayers 3ではありません。必要に応じて、私はopenlayers 3のための実用的なソリューションを投稿することができます。 – x82

+0

できることを確認してください。しかし私は、私のPHPコードから来る複数のマーカーとそれぞれのポップアップを表示したい。マーカーごとに別々のポップアップ。 – Web7

+0

私はあなたにそれを達成する方法を指示することができます(私はopenlayers2を使用してからしばらく時間がかかりました)。まず、マーカーの選択イベント(フィーチャー)をキャッチする必要があります。このためには、マップにコンポーネントを追加する必要があります。イベントをキャッチした後、そのプロパティの1つを使用してフィーチャタイプを区別する必要があります。このcompleteleyはあなたのアプリケーションのロジックに依存します。あなたは、あなたのPHPページにMarkerTypeキーを送り、そのマーカータイプに固有の部分的なHTMLを返し、ポップアップテンプレートに挿入し、ポップアップを表示することができます。 – x82

答えて

0

OpenLayersを2でポップアップを追加する:

popup = new OpenLayers.Popup("yourPopupID", 
       new OpenLayers.LonLat(lon,lat),//could be fetched from a DB 
       new OpenLayers.Size(200,200), 
       "yourDescription",//could be fetched from DB 
       true); 

map.addPopup(popup); 

今、これはあなたがあなたの質問に提供されているコードの例のために十分である、あなたはにAJAX呼び出しを使用してdatbaseからデータを取得することができます

関連する問題