プログラムでGoogleマップマーカー(API V3)を生成する
-
28-09-2019 - |
質問
Googleでプログラムでマーカーを生成することは可能ですか?たとえば、PHPを使用してGoogleマップでプロットしたいサービスと場所のデータベースがあります。
マップAPI V3を使用して、マップを作成し、マーカーと情報ウィンドウを使用してサービスを微細にプロットしましたが、デフォルトマーカーで本当にやりたいのは数値(1,2,3,4など)を生成することです。 DBから取得される順序に基づいてバブル。また、データベース内のサービスタイプに基づいて、マーカーアイコンの色をプログラム的に変更したいと思います。
私はPHPを使用しているので、これを行うスクリプトがあるかどうかはわかりませんが、GoogleがAPIを通じてこのカスタムマーカー生成を提供することを望んでいました。
解決
JavaScriptコードをPHPに吐き出します。
これは、ウィンドウが関連付けられたマーカーを追加するために書いた少し便利なJavaScript関数です。
function add_marker(opts, place) {
var marker = new google.maps.Marker(opts);
marker.place_id = place.id;
markers[place.id] = marker;
var infowindow = new google.maps.InfoWindow({
content: place.details
});
infowindows[place.id] = infowindow;
google.maps.event.addListener(marker, 'click', function() {
infowindows[marker.place_id].open(map,marker);
});
}
したがって、Javascriptyの場所でそれを宣言した後、おそらくあなたのマップが「マップ」と呼ばれるグローバルであると仮定すると、おそらくPHPがあります。
<script type="text/javascript">
<?php
$count = 0;
foreach ($rowset as $row): ?>
add_marker({
position: new google.maps.LatLng(<?php echo $row->lat ?>, <?php echo $row->lng ?>),
title:<?php echo $row->title ?>,
map:map
}, { id:'<?php echo $count ?>', details:'<?php echo $row->details ?>' });
<?php
$count++;
endforeach; ?>
</script>
私はこれをテストしていませんし、データがどのように見えるかについても考えていませんが、その方法はあなたが望むもののために機能するはずです。カスタムマーカーの生成とはどういう意味かは100%確信していません。なぜなら、PHPだけでなく、すでにそれをやっているように聞こえるからです。
他のヒント
Maps APIでは、マーカーを表示するために(任意のdivではなく)画像を使用する必要があるため、画像サーバー側をレンダリングする必要があります。
これを行う簡単な方法は、GoogleチャートAPIを使用してマーカーアイコンをレンダリングすることです。http://code.google.com/apis/chart/docs/gallery/dynamic_icons.html#pins
出力の例:
生成: https://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=c|ff00001000000
他の誰かがこの問題を抱えているかどうかはわかりませんが、私のポイントをプロットするためにジオコードをループすることはできませんでした。したがって、私の方法は、ディスプレイステージの代わりにユーザー入力段階にLAT/LONG座標をジオコードして保存し、Googleにかける帯域幅の応力を解放することでした。
これが役立つかどうかはわかりませんが、おそらくこれらのマーカー画像を事前にコードして保存するのに役立つかもしれません。選択した回答に沿っているので、ページがロードされている間にこれらの画像を作成するためにGoogleに依存しているので、このコードを別の段階で実行し、同僚と一緒に出力を保存することにより、サービスをスピードアップすることをお勧めします。 PHPデータベース。
乾杯、
ダン