2008年8月8日 星期五

mailto 應用 subject 參數中文編碼問題

有時候我們會使用 mailto:,讓使用者直接點連結開啟像 Outlook 這一類的軟體發信與我們連絡。甚至可以利用一些參數預設開啟時的一些資料,範例如下。

subject︰主旨。
body︰內文。
cc︰副本。
bcc︰密件副本。

但是當你的頁面是使用 utf-8 編碼時,在繁體中文 Outlook 中文的部份會出現亂碼,原因就是繁體中文 Outlook 是 big5 編碼,而你傳送的參數值是 utf-8 編碼。

在這情況下我們必須將 big5 的文字做 URL 編碼,在 PHP 可以利用 rawurlencode() 這個函式。要注意的是在做 URL 編碼時,必須確定是針對 big5 的文字所做的編碼,以上面的範例更改成如下。

2008年8月2日 星期六

Google Maps API - 設定地圖控制項位置及自訂地圖控制項

‧地圖控制項位置設定

之前已經介紹過如何透過 GMap2.addControl(control) 添加地圖控制項。addControl 方法有一個非必填的第二參數 GControlPosition(anchor, offset) 可以指定該控制項在地圖上的位置。

anchor 為一常數分別代表地圖的四個角落。
G_ANCHOR_TOP_RIGHT 地圖的右上角
G_ANCHOR_TOP_LEFT 地圖的左上角
G_ANCHOR_BOTTOM_RIGHT 地圖的右下角
G_ANCHOR_BOTTOM_LEFT 地圖的左下角。

offsetGSize(width, height) 物件來表示控制項距離地圖邊緣多少像素。

看範例所呈現的結果

‧自訂地圖控制項

Google Maps API 還允許透過創建 GControl 的子類自訂地圖控制項。從技術角度上講,不是使用 JavaScript 建立對象的 subclass,而是將 prototype 對象分配給 GControl 對象的實例。

自訂可用的地圖控制項,至少為該類定義以下兩個方法︰

initialize() 方法必須返回 DOM 元素,並透過 GMap2.getContainer() 取得包含地圖的 DOM 元素添加到地圖中。

getDefaultPosition() 方法必須返回類型為 GControlPosition,向地圖返回預設情況下控制項在地圖中出現的位置。

看範例所呈現的結果

參考︰
class GMap2︰addControl(control, position?),getContainer()
class GControlPosition
class GSize
enum GControlAnchor
interface GControl


更多教學文件在此︰Google Maps API - 前言及目錄