「メールを送信」などのボタンに使う

の件名や本文に、現在地のURLを載せる方法。

1-1. PHPで現在地の取得
1-2. クエリストリング付きのURLを埋め込む

1-1. PHPで現在地の取得

プロトコル、ホスト、クエリストリングを含めたURLを取得する。
以下のようにすればよい。
$url = (empty ($_SERVER ['HTTPS']) ? 'http://' : 'https://') . $_SERVER ['HTTP_HOST'] . $_SERVER ['REQUEST_URI'];

1-2. クエリストリング付きのURLを埋め込む

こちらが本題。mailto:の条件設定では「&」を件名や本文等の区切り文字として使用しているため、クエリストリングを含むURLをメールに含めようとすると中途半端なところで区切られてしまう。
この対策としては、&をurlエンコードしてからmailtoに含めてやればよい。
例として、クエリストリングを含むURLをメールの本文に設定しておきたい場合は以下のようになる。
$url = (empty ($_SERVER ['HTTPS']) ? 'http://' : 'https://') . $_SERVER ['HTTP_HOST'] . $_SERVER ['REQUEST_URI'];

<a href="mailto:subject=subject&body=<?php echo urlencode($url);?>">メールを送る</a>