最近、Google Maps API をイジくりまわしてます。
一つの地図に複数のマーカーを表示するには、こないだ記事にした方法では出来ないというのが分かり
→ カスタムフィールドの住所からグーグルマップを画像として表示
それを実現するには緯度(lat)と経度(lng)を取得しなければならないらしい。
住所は既にカスタムフィールドに入力されているか、これから入力するという前提で
カスタムフィールドの住所から緯度、経度を調べる
↓
緯度、経度の値を別なカスタムフィールドに入れる。
というのを自動で行えるようにしたいので調べたら
ドンピシャ!のプラグインが公開されていました。
→ postがsaveされたら、自動的に経度緯度をカスタムフィールドに設定するplugin
もう、ホント助かります!
【追記】2013年11月から急に緯度と経度を取得出来なくなりました。私は下記の方法で直りましたので試してみて下さい。
1 |
add_action('save_post','set_cf_latlng'); |
上記の save_post を wp_insert_post に変更。これで私は大丈夫でした。
で、既に「住所を入力しちゃってるんですけど(涙)」という人で、プラグインとかPHPとかに詳しくない人は下記方法を。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function set_cf_latlng($postID){ if($parent_id = wp_is_post_revision($postID)) { $postID = $parent_id; } $address = get_post_meta($postID , 'address',true); if( $address ){ $location = geocode($address); if ( !add_post_meta($postID, '_lat', $location[0], true) ) update_post_meta($postID,'_lat', $location[0] ); if ( !add_post_meta($postID, '_lng', $location[1], true) ) update_post_meta($postID,'_lng', $location[1] ); }else{ delete_post_meta($postID ,'_lat'); delete_post_meta($postID ,'_lng'); } |
の
1 |
$address = get_post_meta($postID , 'address',true); |
上記の ‘address’ のところがカスタムフィールド名なので、ここを自分が設定した(しようとしている)ものに変更。
次に
1 2 3 4 5 6 |
$location = geocode($address); if ( !add_post_meta($postID, '_lat', $location[0], true) ) update_post_meta($postID,'_lat', $location[0] ); if ( !add_post_meta($postID, '_lnt', $location[1], true) ) update_post_meta($postID,'_lnt', $location[1] ); }else{ delete_post_meta($postID ,'_lat'); delete_post_meta($postID ,'_lnt'); |
上記の
‘_lat’ が緯度を入れるカスタムフィールド名なので、ここを自分が設定した(しようとしている)ものに変更。
(3か所)
‘_lnt’ が経度を入れるカスタムフィールド名なので、ここを自分が設定した(しようとしている)ものに変更。
(3か所)
これで完了です!
入力した住所は無駄にならないぜよ!
ちなみに、その投稿記事を保存(セーブ)する時点で住所から緯度、経度に自動変換されます。