顯示具有 Google 標籤的文章。 顯示所有文章
顯示具有 Google 標籤的文章。 顯示所有文章
2011-07-11 17:43

為 Blogger 的地點標記加上 Google Maps 呈現

Blogger 增加了一個標記地點的功能,但只有標記也不知道能拿來做什麼,後來想想用JS寫了一個呈現的小程式,讓文章中設定的資訊可以直接呈現。

以下程式不支援 IE,因為我不想在我的 Blog 上用 Framework,所以 IE 就沒辦法呈現,哈!只要將以下其中一個的程式碼加在 </body> 之前就可以了。

在[文章]的最[前面]插入地圖
<script type="text/javascript">
function showGoogleMap(pos){
    var w=300,h=300,z=14;
try {
    var postOuter=document.getElementsByClassName(&#039;post-outer&#039;);
    for(var i=0; i&lt;postOuter.length; i++){
        var postLocation=postOuter[i].getElementsByClassName(&#039;post-location&#039;)[0];
        var point=postLocation.getElementsByTagName(&#039;a&#039;)[0];
        if(!point){continue;}
        var mapIframe=&#039;&lt;iframe width=&quot;&#039;+w+&#039;&quot; height=&quot;&#039;+h+&#039;&quot; src=&quot;&#039;+point.href+&#039;&amp;output=embed&amp;iwloc=z&amp;z=&#039;+z+&#039;&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&#039;;
        var postBody=postOuter[i].getElementsByClassName(&#039;post-body&#039;)[0];

        switch(pos){
            case &#039;loc-a&#039;:
                postLocation.innerHTML+=mapIframe;
                break;
            case &#039;loc-b&#039;:
                postLocation.innerHTML=mapIframe+postLocation.innerHTML;
                break;
            case &#039;post-a&#039;:
                postBody.innerHTML+=mapIframe;
                break;
            case &#039;post-b&#039;:
            default:
                postBody.innerHTML=mapIframe+postBody.innerHTML;
                break;
        }
    }
}catch(e){}
}
showGoogleMap(&#039;post-b&#039;);
</script>

在[文章]的最[後面]插入地圖
<script type="text/javascript">
function showGoogleMap(pos){
    var w=300,h=300,z=14;
try {
    var postOuter=document.getElementsByClassName(&#039;post-outer&#039;);
    for(var i=0; i&lt;postOuter.length; i++){
        var postLocation=postOuter[i].getElementsByClassName(&#039;post-location&#039;)[0];
        var point=postLocation.getElementsByTagName(&#039;a&#039;)[0];
        if(!point){continue;}
        var mapIframe=&#039;&lt;iframe width=&quot;&#039;+w+&#039;&quot; height=&quot;&#039;+h+&#039;&quot; src=&quot;&#039;+point.href+&#039;&amp;output=embed&amp;iwloc=z&amp;z=&#039;+z+&#039;&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&#039;;
        var postBody=postOuter[i].getElementsByClassName(&#039;post-body&#039;)[0];

        switch(pos){
            case &#039;loc-a&#039;:
                postLocation.innerHTML+=mapIframe;
                break;
            case &#039;loc-b&#039;:
                postLocation.innerHTML=mapIframe+postLocation.innerHTML;
                break;
            case &#039;post-a&#039;:
                postBody.innerHTML+=mapIframe;
                break;
            case &#039;post-b&#039;:
            default:
                postBody.innerHTML=mapIframe+postBody.innerHTML;
                break;
        }
    }
}catch(e){}
}
showGoogleMap(&#039;post-a&#039;);
</script>

在[地點]的[前面]插入地圖
<script type="text/javascript">
function showGoogleMap(pos){
    var w=300,h=300,z=14;
try {
    var postOuter=document.getElementsByClassName(&#039;post-outer&#039;);
    for(var i=0; i&lt;postOuter.length; i++){
        var postLocation=postOuter[i].getElementsByClassName(&#039;post-location&#039;)[0];
        var point=postLocation.getElementsByTagName(&#039;a&#039;)[0];
        if(!point){continue;}
        var mapIframe=&#039;&lt;iframe width=&quot;&#039;+w+&#039;&quot; height=&quot;&#039;+h+&#039;&quot; src=&quot;&#039;+point.href+&#039;&amp;output=embed&amp;iwloc=z&amp;z=&#039;+z+&#039;&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&#039;;
        var postBody=postOuter[i].getElementsByClassName(&#039;post-body&#039;)[0];

        switch(pos){
            case &#039;loc-a&#039;:
                postLocation.innerHTML+=mapIframe;
                break;
            case &#039;loc-b&#039;:
                postLocation.innerHTML=mapIframe+postLocation.innerHTML;
                break;
            case &#039;post-a&#039;:
                postBody.innerHTML+=mapIframe;
                break;
            case &#039;post-b&#039;:
            default:
                postBody.innerHTML=mapIframe+postBody.innerHTML;
                break;
        }
    }
}catch(e){}
}
showGoogleMap(&#039;loc-b&#039;);
</script>


實際呈現樣式:


2011-07-11 14:50

[轉載] Google Maps嵌入參數

為了製作 Blogger 上的地圖呈現,找到一篇詳細參數說明的翻譯,雖然可用的選項不多,但留著以後方便查。


轉載自:Google Maps嵌入参数
原文:http://mapki.com/wiki/Google_Map_Parameters


一般性的內容

q=
這是最常用的參數。

查詢- 所有被傳入這個參數的內容會被象maps.google.com中的查詢輸入框中所輸入的內容一樣被處理,特別是:

  • 要查找的精確地址,標記點或者在某個特殊點上顯示的信息框。
    • 提示:在附近不能有類似或者著名的地點的查詢值才是可靠的。例如,給出一個會議通知,告訴人們去128號門牌號碼的地點,但是只能在街區信息中發現一個12-8的位置(比如6/2010,誰會知道它以後會被匹配到什麼信息? )
  • 城鎮名字,或者前面的部分郵政編碼,會顯示到標記或者信息框裡。
  • 由緯度和經度信息指定的位置,用十進制形式,比如(52.123N,2.456W或52.123,-2.456),或者採用度/分/秒來表示(52 7 22.8N,2 27 21.6W或52 7 22.8,-2 27 21.6),或者度和分(52 7.38N,2 27.36W或52 7.38,-2 27.36)。
  • 在信息窗口和側邊欄中以粗體顯示的文本內容,增加括號()。你可以在不希望斷行的的時候使用%A0防止斷行發生。你還可以在行尾增加足夠多的%A0,並在後面跟一個空格(在URL中使用+號)來強制產生斷行。例子如原文指出:URL: http://maps.google.com?q=New+ York,+NY+(Mapki%A0is%A0a%A0very%A0good%A0Wiki%A0for%A0Google%A0Maps!%A0%A0%A0%A0%A0%A0%A0%A0+The%A0previous%A0line%A0is%A0now% A0sufficiently%A0long!)
  • to和from需要激活駕駛線路規劃功能。
  • 關鍵字near和loc:會激活本地搜索功能。
  • 兩個街之前可以用空格&空格形式,但是在URL裡需要使用+%26%或%20%26%20,而不是+&+或+&amp;+。
  • 需要指出的是+號,其實它與,號的作用相同。
  • 位置信息也可以由在@符號後的十進制形式來表達,如(@52.123,-2.456)。這個方式應該會自動給出一個較低的縮放比例。使用這種格式會影響到查詢的其它參數。 @符號,而不是near或者loc:可以形成單一的查詢結果。而其它的方式可能返回數以千計的結果。
  • q=10+Downing+Str+is+not+here@51.50335,-0.227721
    可以在指定的地址放置一個自定義的提示標記,比如q=唐寧街10號不在這裡@51.50335,-0.227721。  

    • 這個標籤不能是國家的名字,或者沒有顯示出標記的時候。但是當給出座標的情況下,它可以是空白的。
  • 座標之外增加()標籤可以為Google地圖提供一些提示。
    1. http://maps.google.com/maps?q=24.197611,120.780512
      我們的位置正好在某被錯誤標識的知名地點附近。讀者應該可以注意到正確的綠色箭頭。
    2. http://maps.google.com/maps?q=Dan@24.197611,120.780512
      Dan標籤可以擴展成為某機場的名字(Danville Regional Airport)
    3. http://maps.google.com/maps?q=24.197611,120.780512+ (Dan)
      這種情況會安全一些。但是顯示的是一個黃色的標記。
    4. http://maps.google.com/maps?q=loc:24.197611,120.780512這是一個精確的地點表示。
  • 要注意用%表述非ASCII字符,比如(和)還有+是安全的,但是空格必須以%20表示。注意它們可能被用戶的瀏覽器解釋錯誤。
  • sky:前綴用來查詢由Sky產生的KML內容。這個參數是被Google Sky使用,並產生KML輸出。
  • 包含GeoRSS數據的Google Earth .KML/.KMZ文件或者RSS輸出的完整URL,可以被Google Earth使用,裡麵包含的信息可以被顯示在地圖上。

near=
可以使用位置信息的一部分,而不是像q=參數那樣輸入全部信息。

g=
這是一個給q參數提供額外上下文信息的地址或位置。 Google Maps在這裡自己用來保存上一次運行的搜索。注:如果這是第一次運行,它將包含你所開始的位置信息。所以它有潛在的信息洩露的風險,你需要檢查你是否真的明白並且要分享這個參數所對應的信息。


Search Mode/查詢模式

  • mrt=指出查詢的類型(空白表示所有內容-缺省)
    • mrt=all值為all指出查詢所有內容。
    • mrt=loc值為loc指出是進行位置信息查詢,它需要q=參數。
    • mrt=yp值為yp指出是商業查詢(即:黃頁),它也需要q=信息,一般情況下是位置信息。
    • mrt=websearch值為websearh指出映射的web頁面。這些網頁通過GoogleBot能夠指出地理位置信息。
    • mrt=realestate值為realstate為固定資產查詢。
    • mrt=ds值為ds時為相關的地圖。 Google的GeoRSS源索引(可能是KML?)
  • start=start=參數會跳過前(start-1)個匹配結果。
  • num=num=參數顯示,最多這個數量的匹配結果。合法的範圍是0到20(但是0有點沒有用處)。

Location/位置信息

  • ll= 顯示地圖時中心點的緯度、經度信息。要注意次序。而只接受十進制數值格式才可以。
    如果使用了這個參數但是沒有使用查詢,那麼地圖就以這個點為中心點顯示,但是沒有標記或信息窗口顯示。
  • sll=
    商業查詢執行時指定的點的緯度和經度。你可以使用它來執行一個偏離中心的商業搜索。 Google使用它,所以在執行完一個商業查詢後,中心移動後可以使用“鏈接到此頁”來記錄地圖位置。使用<math>map.getBounds().getSouthWest().toUrlValue()</math>將返回與maps.google.com相同的結果。
  • spn=spn=大致的經緯區域。如果沒有指縮放參數z=,那麼將調整縮放水平到一個合理的數值。
  • sspn=
    屏幕區域,計算方法:
    <math>new GLatL​​ng(map.getBounds().getNorthEast().lat() – map.getBounds().getSouthWest().lat(), map.getBounds().getNorthEast().lng() – map .getBounds().getSouthWest().lng()).toUrlValue()</math>
  • latlng=這是一個奇怪的參數。它有3個由,號分隔的數字。前兩個數字(大概相當於緯度和經度的100000倍)被忽略。第三個數字似乎是Google內部用來處理特殊業務的企業ID。比如latlng=0,0,14944637421527611642代表Blackpool社區教堂。指定此參數會執行一個針對該業務面頁的Google搜索,並顯示一個小地圖。其它參數,特別是q=參數,必須是有效的內容(但不一定涉到目標業務)。
  • cid= Similar to latitude and longitude, but generating a different map size.
    這個值似應該是地點的編號。原文的表述與latlang重複。
  • geocode=
    geocode值似乎是在線路規劃時各關鍵點的編碼。每個geocode之間使用%3B來分隔。
  • radius=在指定半徑內採用本地化信息。需要sll參數指定信息或者類似中心點位置才能使用。單位會採用英里,但是在公制國家可能會採用公里。這個參數有助預防Google結果遠離了結果城市,並讓它被限制在指定區域。

Map Display/地圖顯示

  • t=地圖類型。 m=>常規地圖,k=>衛星地圖,h=>混合地圖,p=>地域地圖,e=>GoogleEarth
  • z=縮放級別,取值範圍1~20。1比例尺最大,20比例尺最小。
  • layer=激活圖層。目前t表示交通情況。
  • lci=激活可以層疊的圖層。用,號分隔。
    • com.panoramio.all 來自Panoromio的圖片
    • com.youtube.all來自YouTube的視頻
    • org.wikipedia.en維基百科(英文)
    • com.google.ugc.c752d13e87c4fbd7來自Webcams.travel的網絡攝像頭。
    • transit公共交通
    • bike自行車線路
  • view=這個參數在測試的時候沒有看出分別。

Directions/路徑規劃

  • saddr= 出發點地址。
  • daddr=目標地址。
    “+to:” 可以使用+to:子句增加多地點線路規劃時的目標地址信息,比如daddr=大石洞村+to:馬欄廣場+to:棠梨溝
  • mra ?? 此參數涵義未知,可能的取值:dm/dpe/cc/ls…
  • mrcr ??此參數涵義未知,可能的取值:0
  • mrsp解析座標到街名。
    • mrsp=0打開從座標解析街名
    • mrsp=1關閉從座標解析街名
  • mrad= 附加目標地址。如果你的行程有三個地點,你可以用saddr=,daddr=和mrad=表示,而不採用+to:子句。
  • dirflg 路線類型。
    • dirflg=h避免高速公路。
    • dirflg=t避免收費路段。
    • dirflg=r採用公共交通。僅在一些區域可用。還可以提出附加的時間信息。
    • dirflg=w步行方式。仍在測試狀態。
    • dirflg=b騎行方式。僅在某些區域可用,仍在測試狀態。
  • via=用,號分隔的經由地址。
  • doflg=距離單位。缺省的是國家的法定標準。
    • doflg=ks ??這個真不知道。
    • doflg=ptk輸出距離單位顯示為公里。
    • doflg=ptm輸出距離單位顯示為英里。
  • ttype= 時間類型。在dirflg=r的狀況下採用公共交通工具的時候date和time參數的解析類型。  
    • ttype=now現在就出發,這個會忽略date和time參數。
    • ttype=dep 出發時間。
    • ttype=arr 到達時間。
  • date= 出發/到達日期,格式mm/dd/[yy]yy。由ttype決定是哪個日期。
  • time= 出發/到達時間,格式hh:mm am|pm。由ttype決定是哪個時間。
  • sort= 公共交通線路的排序 
    • sort=def缺省的排序方式。最快的行程優先。
    • sort=num最少的換乘優先。
    • sort=walk最少的步行優先。
  • start=與搜索模式很像,選擇第n個結果。

Street View/街景

  • cbll= Latitude,longitude for Street View.街景的經緯度信息。
  • cbp= Street View window that accepts 5 parameters街景窗口可以接受5個參數:
    1. 街景/地圖安排,11=上半部街景,下半部地圖,12=大部分是街景顯示,角部為可以調整角度的地圖
    2. 移軸角度,範圍是-90到90度。
    3. 縮放範圍,0~2
    4. 斜度(採用度數表示),-90~90,缺省值是5
  • panoid=這裡的ID是附近的全景對象的ID。全景對象採用可以點擊的小箭頭,你可以移動到下一個對象。

Output Control/輸出控制

  • hl=主機語言。僅支持一部分語言,如hl=fr表示法語
  • om=這個參數指定下方縮略圖是否顯示。如果指定一個1以外的值,縮略圖會關閉。 (經過測試1,2會顯示)。如果參數會被省略或者指定了值1,則顯示。
  • ie=指定輸入的字符編碼,比如ie=UTF8。
  • oe=指定輸出的字符編碼,比如oe=UTF8。
  • output=指定輸出格式,空白(缺省值)是標準的網頁格式。  
    • output=html在整合到Google地圖前使用舊風格的Google本地頁面格式,顯示小地圖和大的邊欄風格。
    • output=js輸出Google地圖使用的JavaScript對象和函數調用,包括駕駛線路的多邊形編碼和HTML格式的場景信息。
    • output=kml輸出包含當前地圖信息的KML文件。
    • output=mobile針對移動設備的格式輸出。在地圖中央位置顯示一個簡單的紅色圖釘。所有的移動基於鏈接而不是鼠標的移動。
    • output=nl輸出Google Earth和Google Maps可以獲取NetworkLink信息的KML文件內容。
    • output=embed輸出可以嵌入到第三方網站的HTML內容。這個參數僅與加密的s=參數一塊工作,據推測可能是阻止顯示不可預知的內容。
    • output=dragdir返回JSON對象。此對象包括反向的地理位置編碼和針對給定saddr(線路開始點)和daddr(線路結束點)線路的多邊形編碼。
    • output=georss 針對當前地圖(可能僅適用於MyMaps)的GeoRSS輸出。
  • f=控制查詢表單的顯示風格。  
    • f=d顯示成路徑規劃表單(有兩個輸入框,始點、終點)
    • f=l此參數似乎沒有作用了。
    • f=q缺省的顯示方式,單一輸入框。
  • pw=激活打印模式,初始化打印。與原文不同,pw=1/2兩個值均可以。測試環境是Ubuntu 11.04+Google Chrome。
  • v= 如果指定了output=kml,則此參數指定kml的版本。缺省是2.0,如果想指定是2.2,則v=2.2。

提示信息窗口

信息顯示窗口就是漫畫書中的對話氣球框。


我的地圖

  • msa=參數目前應該沒有意義了。

雜項

  • vp= 這個參數會使Google地圖切換到版權服務模式。它以JavaScript格式返回所有者的版權信息而不是返回可以畫出地圖的html內容。 vp參數指出視圖位置(即地圖的中心位置)。版權服務僅在提供了spn=z=參數的情況下才可以工作。它們分別代表區域和縮放比例。一還有一些可選的參數,比如t=,它用來指出地圖的類型,key=用來指出站點用來執行查詢時所用到的API key。例如:http://maps.google.com/maps?spn=0.030372,0.068665&z=6&t=h& vp=53.859462,-3.038235
  • ftr=0 這個參數是用來關掉所有Google地圖實驗室特性的。當你遇到這些特性出現問題或者無法載入地圖,這個特性可能提供有用的途徑。使用這個參數之後,你需重新激活那些實驗室特性。比如訪問:http://maps.google.com/maps?ftr=0。這個鏈接會提示你關掉了哪些特性,並且會提示是否保存這種改變。
  • source= 未知。一個值是s_d,另一個是s_q。
  • noexp= 未知。其中一個值是0。
  • noal= 未知。其中一個可取值是0。
  • oi=nojs 在它合併到Google地圖之前使用舊風格的Google本地頁面格式,使用小地圖和大的邊條,就像前面指定output=html選項那樣。這個選項需要停止JavaScript的工作。
2010-12-24 01:02

[轉載] Google 氣球

轉載自:robhawkes
實在是太酷了,想儲存起來
2009-11-25 16:00

[PHP] 取得 Google Analytics 的統計資料

這裡我使用GAPI(google-analytics-php-interface)這個工具來取得 Google Analytics 的統計資料

如果不想使用這個工具取得資料,Google Analytics 也有 Protocol 的連接教學 Data Export API - Protocol

在取得資料的過程中,我在一個觀念上問題花了不少時間,主要是下面這兩個參數上的設定:
  • dimensions : 特性類似 SQL 的 GROUP BY
  • metrics : 類似 SQL SELECT 的資料欄位

其他的資料欄位:Dimensions & Metrics Reference


工具的連結範例:
<?php
require_once('gapi.class.php');

/*建立與帳戶的連結*/
$ga = new gapi('email@yourdomain.com','password');


/*取得統計報告*/
$ga->requestReportData(
    145141242,
    array('browser','browserVersion'),
    array('pageviews','visits')
);

foreach($ga->getResults() as $result){
    echo $result;
    echo 'Pageviews:',$result->getPageviews();
    echo 'Visits:',$result->getVisits();
}

echo 'Total pageviews:',$ga->getPageviews(); 
echo 'total visits:',$ga->getVisits();



函數的參數說明:
<?php
requestReportData(
    $report_id,
    $dimensions,
    $metrics,
    $sort_metric=null,
    $filter=null,
    $start_date=null,
    $end_date=null,
    $start_index=1,
    $max_results=30
)

屬性型態描述範例
$report_idString統計報告的ID1892302
$dimensionsArray尺寸欄位,類似 SQL 的群組array('browser')
$metricsArray結果欄位,類似 SQL 的顯示欄位array('pageviews')
$sort_metricArray(選擇性)資料排序依據,"visits" 為 ASC,"-visits" 為 DESCarray('-visits')
$filterString(選擇性)過濾的邏輯條件 
$start_dateString(選擇性)報告的起始時間'YYYY-MM-DD''2009-04-30'
$end_dateString(選擇性)報告的起始時間'YYYY-MM-DD''2009-06-30'
$start_indexInt(選擇性)資料的起始指標1
$max_resultsInt(選擇性)資料的起始指標.最大 1000 筆30
2009-04-13 17:05

網頁常用編碼轉換 (iGoogle)小工具

將一些 JavaScript 中常用的 escape, unescapek, encodeURI, decodeURI, encodeURIComponent, decodeURIComponent 及 HTML 跳脫與反跳脫製作成小工具。
2009-03-29 08:09

iGoogle 小工具製作心得

iGoogle 小工具主要是以 XML 為主體,再加上 HTML、CSS 及 JavaScript 所組成的,基本上只要會後面三種語言,要開發 iGoogle 小工具是非常快樂的一件事。

在這裡我只做一些的教學及心得分享,詳細的規範及 API 說明,請察看官方網站 Google 小工具 API 開發人員指南,開發指南裡面寫的很清楚,還有很多的範例可以參考。

心得建議:
  • 開發時建議 XML 的檔名不要太正式,iGoogle 的平台會 cache XML,造成檢視上會出現不一致情況,等到要發佈時再取一個正式的檔名,避免不必要的問題發生。
  • 如果要使用 session 和 cookie 做登入驗證的話,最好使用 <iframe> 去處理,會比較容易達成且安全問題也比較少。
  • 在 ModulePrefs 中的 category 屬性也記得加上去,在官方的開發人員指南中並沒有說明,共有:
    • politics
    • tools
    • funandgames
    • lifestyle
    • finance
    • communication
    • 等...。

  • 多利用[便條簿]做測試可以減少不少時間。
  • 測試時最好在 iGoogle 上另開一個[分頁],免得自己原本常用的小工具被打亂。
  • 在測試的[分頁]中最好加上[開發人員小工具]這個小工具去管理 cache 問題。

小工具範例:

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs
title="單位換算"
description="更方便的介面處理單位制度上的換算"
directory_title="單位換算"
author="Jax"
author_email="weskerjax+feed@gmail.com"
thumbnail=
"http://weskerjax.googlepages.com/unit_converter_thumbnail.png"
screenshot=
"http://weskerjax.googlepages.com/unit_converter_screenshot.png"
title_url="http://jax-work-archive.blogspot.com/"
category="tools"
height="300">
<Locale lang="zh-tw" country="TW"/>
<Require feature="tabs"/>
<Require feature="dynamic-height"/>
</ModulePrefs>
<UserPref
name="type"
display_name="預設開啟的頁籤"
default_value="長度"
datatype="enum">
<EnumValue value="長度"/>
<EnumValue value="重量"/>
<EnumValue value="面積"/>
<EnumValue value="體積"/>
</UserPref>
<Content type="html">
<![CDATA[
<style type="text/css">
.JContent table{
margin-top:5px;
width:100%;
}
.JContent th{
background-color:#99CCFF;
padding-top:5px;
}
.JContent label{
text-align:center;
padding:3px;
display:block;
font-size:12px;
}
.JContent label input{
display:block;
text-align:left;
line-height:1.1em;
font-size:11px;
width:95%;
}
</style>
<script type="text/javascript">
var prefs = new _IG_Prefs(__MODULE_ID__);
function set_event__MODULE_ID__(tabId){
var inputs=_gel(tabId).getElementsByTagName('input');
for (var i=0, j=inputs.length; i<j; i++){
el=inputs[i];
/*設定 onkeyup 時處理單位換算*/
el.onkeyup=function(){
this.value=this.value.match(/[0-9]+[\.]?[0-9]*/);
var rate=this.getAttribute('rate');
var value=parseFloat(this.value)/parseFloat(rate);

var table=this;
while(table.tagName!="TABLE"){table=table.parentNode;}

var inputs=table.getElementsByTagName('input');
for (var i=0, j=inputs.length; i<j; i++){
chg=inputs[i];
r=chg.getAttribute('rate');
if(r==rate){continue;}

if(this.value){chg.value=value*parseFloat(r);}
else{chg.value='';}
};
};
/*設定 onfocus 選取所有文字*/
el.onfocus=function(){this.select()};
};
/*讓小工具能夠自行調整大小*/
_IG_AdjustIFrameHeight();
}
function init() {
/*建立頁籤並選定預選頁籤*/
var tabs = new _IG_Tabs(__MODULE_ID__,prefs.getString("type"));
tabs.addTab("長度","J_length",set_event__MODULE_ID__);
tabs.addTab("重量","J_weight",set_event__MODULE_ID__);
tabs.addTab("面積","J_area",set_event__MODULE_ID__);
tabs.addTab("體積","J_volume",set_event__MODULE_ID__);
}
_IG_RegisterOnloadHandler(init);/*載入時呼叫的事件處理常式*/
</script>
<div class="JContent" id="J_length">
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td><label>公尺<input rate="1" type="text" /></label></td>
<td><label>公里<input rate="0.001" type="text" /></label></td>
<td><label>海里<input rate="0.00053996" type="text" /></label></td>
<tr>
<td><label>英吋<input rate="39.370" type="text" /></label></td>
<td><label>英呎<input rate="3.2808" type="text" /></label></td>
<td><label>英碼<input rate="1.0936" type="text" /></label></td>
</tr>
<td><label>台尺<input rate="3.3003" type="text" /></label></td>
<td><label>市里<input rate="2e-3" type="text" /></label></td>
<td><label>市引<input rate="0.03" type="text" /></label></td>
</tr>
</table>
</div>
<div class="JContent" id="J_weight">
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td><label>公斤<input rate="1" type="text" /></label></td>
<td><label>公克<input rate="1e+3" type="text" /></label></td>
<td><label>公噸<input rate="1e-3" type="text" /></label></td>
</tr>
<tr>
<td><label>英磅<input rate="2.2046" type="text" /></label></td>
<td><label>盎司<input rate="35.273" type="text" /></label></td>
<td><label>英噸<input rate="9.8421e-4" type="text" /></label></td>
</tr>
<tr>
<td><label>美噸<input rate="0.0011023" type="text" /></label></td>
<td><label>格令<input rate="15432" type="text" /></label></td>
<td><label>克拉<input rate="5000" type="text" /></label></td>
</tr>
<tr>
<td><label>台斤<input rate="1.6667" type="text" /></label></td>
<td><label>台兩<input rate="26.667" type="text" /></label></td>
<td><label>市擔<input rate="0.02" type="text" /></label></td>
</tr>
</table>
</div>
<div class="JContent" id="J_area">
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td><label>公畝<input rate="100.00" type="text" /></label></td>
<td><label>公頃<input rate="1" type="text" /></label></td>
<td><label>平方公里<input rate="0.01" type="text" /></label></td>
</tr>
<tr>
<td><label>平方英寸<input rate="155e+5" type="text" /></label></td>
<td><label>平方英尺<input rate="107640" type="text" /></label></td>
<td><label>平方碼<input rate="11960" type="text" /></label></td>
</tr>
<tr>
<td><label>英畝<input rate="2.4711" type="text" /></label></td>
<td><label>平方英里<input rate="0.003861" type="text" /></label></td>
<td> </td>
</tr>
</table>
</div>
<div class="JContent" id="J_volume">
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td><label>立方公尺<input rate="1" type="text" /></label></td>
<td><label>公升<input rate="1e+3" type="text" /></label></td>
<td><label>毫升<input rate="1e+6" type="text" /></label></td>
</tr>
<tr>
<td><label>英國加侖<input rate="219.97" type="text" /></label></td>
<td><label>液體加侖<input rate="264.17" type="text" /></label></td>
<td><label>固體加侖<input rate="227.02" type="text" /></label></td>
</tr>
</table>
</div>
]]>
</Content>
</Module>


範例預覽:

範例原始檔:unit_converter.xml


第一個開發的小工具:
2008-04-17 00:29

iGoogle 上的日曆小工具

將日曆加入 iGoogle 分頁,這個小工具還可以置換成其他網頁
介紹網站:Your Page Here (an iGoogle gadget)
工具連結

利用 HTML/Javascript 小工具將 Google 日曆的 iframe 加入 iGoogle
介紹網站:Add Full Web Pages to iGoogle
工具連結
2007-10-16 23:09

好用的 iGoogle

今天看硬是要學中寫了一篇有關 iGoogle 的介紹,心血來潮也將我的 iGoogle 分類了一下,而且發現到原來之前掛的書籤工具Google Bookmarks蠻人性化的,除了高度不能變長,且最多只顯示四個,也沒有捲軸,真是缺失阿!!

不過呢!在新增和修改的操作上很人性化,還具有分類的功能,你只要貼上網址,他自動會去抓那個網頁的標題,真的很方便的說,不知道以後會不會修得更好,期待一下吧!要是沒有的話,只好自己寫一個。

iGoogle 可以自訂喜歡的樣式,還可以增加頁籤,不用將一推工具都放在一起了,可以看起來更簡潔,Google 有很多服務都很好用,有興趣的人可以多嘗試一些沒用過的服務,或者去看看相關的介紹文章,別錯失了這些好用的工具。

教學連結:硬是要學
2007-09-16 03:21

Google 的免費空間

今天為了找一個空間來放我寫的網頁,原本想用 Google 文件來放的,但對於 HTML 的格式還是有些限制,所以只好找其他的辦法了,於是我想我們的 Google 大神應該有辦法為我解決這個問題,果然讓我找到了,每個 Google 帳號都擁有 100MB 的免費空間,但目前只有英文版,而且空間並不大,還好我只有放一些純文字文件,所以已經很夠用了。

我找到一個相關的說明網頁
http://fecfec.googlepages.com/gpage.htm

Google 免費空間
Google page Creator