Module: Jpmobile::Helpers

Defined in:
lib/jpmobile/helpers.rb

Overview

携帯電話端末に位置情報を要求するための、特殊なリンクを出力するヘルパー群。 多くのキャリアでは特殊なFORMでも位置情報を要求できる。

Instance Method Summary collapse

Instance Method Details

au GPS位置情報を取得するためのリンクを返す。



112
113
114
# File 'lib/jpmobile/helpers.rb', line 112

def au_gps_link_to(str, options = {})
  link_to_url(str, au_gps_url_for(options))
end

#au_gps_url_for(options = {}) ⇒ Object

au GPS位置情報を取得するためのURLを返す。



97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/jpmobile/helpers.rb', line 97

def au_gps_url_for(options = {})
  url = options
  datum = 0 # 0:wgs84, 1:tokyo
  unit = 0 # 0:dms, 1:deg
  if options.is_a?(Hash)
    options = options.symbolize_keys
    options[:only_path] = false
    datum = (options.delete(:datum) || 0).to_i # 0:wgs84, 1:tokyo
    unit = (options.delete(:unit) || 0).to_i # 0:dms, 1:deg
    url = url_for(options)
  end
  "device:gpsone?url=#{CGI.escape(url)}&ver=1&datum=#{datum}&unit=#{unit}&acry=0&number=0"
end

au 簡易位置情報を取得するためのリンクを返す。



128
129
130
# File 'lib/jpmobile/helpers.rb', line 128

def au_location_link_to(str, options = {})
  link_to_url(str, au_location_url_for(options))
end

#au_location_url_for(options = {}) ⇒ Object

au 簡易位置情報を取得するためのURLを返す。



117
118
119
120
121
122
123
124
125
# File 'lib/jpmobile/helpers.rb', line 117

def au_location_url_for(options = {})
  url = options
  if options.is_a?(Hash)
    options = options.symbolize_keys
    options[:only_path] = false
    url = url_for(options)
  end
  "device:location?url=#{CGI.escape(url)}"
end

DoCoMo FOMAでGPS位置情報を取得するためのリンクを返す。



45
46
47
48
49
50
51
52
53
# File 'lib/jpmobile/helpers.rb', line 45

def docomo_foma_gps_link_to(str, options = {})
  url = options
  if options.is_a?(Hash)
    options = options.symbolize_keys
    options[:only_path] = false
    url = url_for(options)
  end
  %(<a href="#{url}" lcs>#{str}</a>).html_safe
end

DoCoMoでiモードIDを取得するためのリンクを返す。



86
87
88
89
90
91
92
93
94
# File 'lib/jpmobile/helpers.rb', line 86

def docomo_guid_link_to(str, options = {})
  url = options
  if options.is_a?(Hash)
    options = options.symbolize_keys
    options[:guid] = 'ON'
    url = url_for(options)
  end
  link_to_url(str, url)
end

DoCoMoでオープンiエリアを取得するためのリンクを返す。



70
71
72
# File 'lib/jpmobile/helpers.rb', line 70

def docomo_openiarea_link_to(str, options = {})
  link_to_url(str, docomo_openiarea_url_for(options))
end

#docomo_openiarea_url_for(options = {}) ⇒ Object

DoCoMoでオープンiエリアを取得するためのURLを返す。



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/jpmobile/helpers.rb', line 56

def docomo_openiarea_url_for(options = {})
  url = options
  if options.is_a?(Hash)
    options = options.symbolize_keys
    options[:only_path] = false
    posinfo = options.delete(:posinfo) || '1' # 基地局情報を元に測位した緯度経度情報を要求
    url = url_for(options)
  else
    posinfo = '1'
  end
  "http://w1m.docomo.ne.jp/cp/iarea?ecode=OPENAREACODE&msn=OPENAREAKEY&posinfo=#{posinfo}&nl=#{CGI.escape(url)}"
end

DoCoMoで端末製造番号等を取得するためのリンクを返す。



75
76
77
78
79
80
81
82
83
# File 'lib/jpmobile/helpers.rb', line 75

def docomo_utn_link_to(str, options = {})
  url = options
  if options.is_a?(Hash)
    options = options.symbolize_keys
    options[:only_path] = false
    url = url_for(options)
  end
  %(<a href="#{url}" utn>#{str}</a>).html_safe
end

位置情報(緯度経度がとれるもの。オープンiエリアをのぞく)要求するリンクを作成する。 位置情報を受け取るページを url_for に渡す引数の形式で options に指定する。 :show_all => true とするとキャリア判別を行わず全てキャリアのリンクを返す。 第1引数に文字列を与えるとその文字列をアンカーテキストにする。 第1引数がHashの場合はデフォルトのアンカーテキストを出力する。



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/jpmobile/helpers.rb', line 11

def get_position_link_to(str = nil, options = {})
  if str.is_a?(Hash)
    options = str
    str = nil
  end
  show_all = nil
  if options.is_a?(Hash)
    options = options.symbolize_keys
    show_all = options.delete(:show_all)
  end

  # TODO: コード汚い
  s = []
  if show_all || request.mobile.instance_of?(Mobile::Docomo)
    s << docomo_foma_gps_link_to(str || 'DoCoMo FOMA(GPS)', options)
  end
  if show_all || request.mobile.instance_of?(Mobile::Au)
    if show_all || request.mobile.supports_gps?
      s << au_gps_link_to(str || 'au(GPS)', options)
    end
    if show_all || (!request.mobile.supports_gps? && request.mobile.supports_location?)
      s << au_location_link_to(str || 'au(antenna)', options)
    end
  end
  if show_all || request.mobile.instance_of?(Mobile::Vodafone) || request.mobile.instance_of?(Mobile::Softbank)
    s << softbank_location_link_to(str || 'Softbank 3G(GPS)', options)
  end
  if show_all || request.mobile.instance_of?(Mobile::Willcom)
    s << willcom_location_link_to(str || 'Willcom', options)
  end
  s.join("<br>\n").html_safe
end

Softbank(含むVodafone 3G)で位置情報を取得するためのリンクを返す。



147
148
149
# File 'lib/jpmobile/helpers.rb', line 147

def softbank_location_link_to(str, options = {})
  link_to_url(str, softbank_location_url_for(options))
end

#softbank_location_url_for(options = {}) ⇒ Object

Softbank(含むVodafone 3G)で位置情報を取得するためのURLを返す。



133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/jpmobile/helpers.rb', line 133

def softbank_location_url_for(options = {})
  url = options
  mode = 'auto'
  if options.is_a?(Hash)
    options = options.symbolize_keys
    mode = options.delete(:mode) || 'auto'
    options[:only_path] = false
    url = url_for(options)
  end
  url.sub!('?', '&')
  "location:#{mode}?url=#{url}"
end

Willcom 基地局位置情報を取得するためのリンクを返す。



163
164
165
# File 'lib/jpmobile/helpers.rb', line 163

def willcom_location_link_to(str, options = {})
  link_to_url(str, willcom_location_url_for(options))
end

#willcom_location_url_for(options = {}) ⇒ Object

Willcom 基地局位置情報を取得するためのURLを返す。



152
153
154
155
156
157
158
159
160
# File 'lib/jpmobile/helpers.rb', line 152

def willcom_location_url_for(options = {})
  url = options
  if options.is_a?(Hash)
    options = options.symbolize_keys
    options[:only_path] = false
    url = url_for(options)
  end
  "http://location.request/dummy.cgi?my=#{url}&pos=$location"
end