1

Wordpress で GoogleMap に動的にマーカーを作成したいと思います。マーカーは投稿タグ (すべての場所) から計算されます。座標の計算とphp配列の作成に問題はありません。問題は、ポインターが表示されないため、配列に格納された動的に生成されたデータをマップにプロットする必要がある場合に発生します。

WP header.php で次の指示を指定しました。

  <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=mykey" type="text/javascript"></script>

  <script src="<?php bloginfo('template_directory'); ?>/mapLocations_cache.php" type="text/javascript"></script> 
  <script src="<?php bloginfo('template_directory'); ?>/map_functions.js" type="text/javascript"></script>

動的に作成された配列 (mapLocations_cache.php に保存) の形式は次のとおりです。

   var markers = [
   {
  'latitude': 62.3908358,
  'longitude': 17.3069157,
  'title': 'it happens in Sundsvall',
  'news': 'che noia5'
   },
   ];

map_functions.js には次のコードが含まれています。

   var centerLatitude = 62.3908358;
   var centerLongitude = 17.3069157;
   var startZoom = 4;

   var map;

   function addMarker(latitude, longitude, description) {
   var marker = new GMarker(new GLatLng(latitude, longitude));

    GEvent.addListener(marker, 'click',
     function() {
        marker.openInfoWindowHtml(description);
     }
   );

   map.addOverlay(marker);
   }

   function init() {
   if (GBrowserIsCompatible()) {    
    map = new GMap2(document.getElementById("map")); 
    map.addControl(new GSmallMapControl());
    map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);

    for(id in markers) {
        addMarker(markers[id].latitude, markers[id].longitude, markers[id].title);


    }
    }
    }

    window.onload = init;
    window.onunload = GUnload;

動的に生成されていないファイル/配列を使用すると、このコードはうまく機能するため、WordPress の投稿とタグから動的にデータを収集しようとすると、ヘッダーに含まれる JavaScript が適切に完了していないのではないかと疑っています。

どんな提案も役立ちます:-(

乾杯

マリーナ

4

4 に答える 4

0
 var markers = [
      {
          'latitude': 62.3908358,
          'longitude': 17.3069157,
          'title': 'it happens in Sundsvall',
          'news': 'che noia5'
      },
   ];

終了アポストロフィがありませんでした。これが問題であるかどうかはわかりませんが、問題がないことを確認してください。

それ以外はよくわかりませんが、このリンクもチェックしてください:http ://code.google.com/apis/maps/documentation/javascript/

于 2011-09-15T12:35:56.097 に答える
0

以下にいくつかの提案を示します。

  1. 配列の最後の要素の後に「,」がないことを確認してmarkersください (現在のコードのように)。
  2. for (id = 0; id < markers.length; ++id) {...}配列を反復することを好みます。
  3. で適切な数値を取得していることを確認してくださいfunction addMarker(lat, lng, ..)。次の方法で数値へのキャストを強制することもできますvar marker = new GMarker(new GLatLng(lat-0, lng-0));
  4. 「ソースの表示」などを使用して、ブラウザーでページのソースを表示して確認します。
  5. 完全なページ ソースをローカル コンピューターにダウンロードして確認します。
  6. Javascript デバッガー (Firebug など) を使用してコードをデバッグします。
于 2011-09-15T15:03:31.270 に答える
0

別のスクリプトで経度と緯度をコーディングするのではなく、Google Geocoding API を使用して場所自体を渡します。Google API は、都市名、国名、および郵便番号を適切に処理し、書式設定が完全​​でなくても十分に防げます。

于 2011-09-15T22:21:21.330 に答える
0

ユーレカ!エラーの解決策を見つけました。ポインターと GoogleMaps を処理する Javacript コードをヘッダーで指定する代わりに、index.php の末尾に移動しました。これは、Geocoder がジョブを終了し、ポインター リスト/配列が完成したときにのみ、マップ データが処理されることを意味します。

PhP と Javascript の間の相互作用は、私には完全に明確ではありませんでした :-)

マリーナ

于 2011-09-26T12:33:44.653 に答える