このコードの作業例で
更新JsFiddleで2番目の更新地図ウィンドウまたはマウスオーバーマップをクリックして開き、リストを強調表示する両方の方法の例
私が理解しているように、あなたが抱えている問題は次のとおりです。
- 人はマップとは別にdivにリストされています
- 人物には、地図上で緯度と経度が関連付けられています
- マップには、緯度経度を使用してマーカーが付いている人の位置が表示されます(dbなどに保存される場合があります)
- あなたはそれが欲しいので、人々は地図上で人をハイライトしたり、マウスを上に置いてリストしたりすることができます。
マップ上またはリストから緯度/経度を利用できる場合は、それらを相互に関連付ける必要があります。
解決策はこのようなものですが、このマッピングを実現する方法はたくさんあります
- 人がリストされているあなたのdivで。人物がその要素にカーソルを合わせたときに、各人物要素にdata-mapid属性を挿入し、それを強調表示して、そこからdata-mapidを取得します。
- マップ上でマーカーをレンダリングするときに、パラメーターdata-mapidまたは同じ値を持つ他の何かを追加で渡すことができ、マップ上でハイライト機能を使用することもできます。
`jQuery("#gmap3ul li[data-gb='plist']").each(function(){
elemtopush = {
lat:jQuery(this).attr("data-lat"),
lng:jQuery(this).attr("data-long"),
data:{
"ht":jQuery(this).html(),
"id":jQuery(this).attr("data-mapid")
}
};
ulmarkerspgb.push(elemtopush);
});`
上記のコードでは、マップに表示するhtmlとdata-mapidとしてのidがあります。これで、このmapidはperson1 person2などになり、リストを使用してdivに関連付けることができます。私はulとliを使用してそれらをdivにリストしています。
マーカーイベントの上にマウスを置くと、次のようなことができます
mouseover: function(marker, event, data)
{
clearalllist();
var listelement = jQuery("td[data-mapid='"+data.id+"']");
jQuery(listelement).attr('style','background-color:#ccc');
var map = jQuery(this).gmap3('get'),
infowindow = jQuery(this).gmap3({action:'get', name:'infowindow'});
if (infowindow){
infowindow.open(map, marker);
infowindow.setContent(data.ht);
google.maps.event.addListener(infowindow, 'closeclick', function(event) {
jQuery(listelement).attr('style','');
});
google.maps.event.addListener(infowindow, 'close', function(event) {
jQuery(listelement).attr('style','');
});
} else {
jQuery(this).gmap3({action:'addinfowindow', anchor:marker, options:{content: data.ht}});
infowindow = jQuery(this).gmap3({action:'get', name:'infowindow'});
google.maps.event.addListener(infowindow, 'closeclick', function(event) {
jQuery(listelement).attr('style','');
});
google.maps.event.addListener(infowindow, 'close', function(event) {
jQuery(listelement).attr('style','');
});
}
}
私がコピーして3つの場所から貼り付けた冗長なコードがたくさんあるので、あなたはそれからあなたが望むものを手に入れることができるかもしれません。
これにより、マップをリストにリンクし、リストをマップにリンクさせることができます。上の2番目の更新を参照するか、このJSFiddleの例をクリックしてください。上部のリストをクリックするとマップウィンドウが開き、マップアイコンの上にマウスを置くとリストが強調表示されます。
これにより、jsでlat longをハードコーディングするのではなく、リストを介してマップにデータが入力されます。