iPhoneで地図を使ったアプリを開発する際、画面上にうつってる範囲の距離を取得したい時があります。
画面上で見えてる範囲だけ距離を取得しAPIに投げたい。のが動機です。
まずはiPhone上に地図を表示しなくては始まりませんね。
xcodeで新規プロジェクト、シングルページで新規アプリを作ります。
下記コードをコピペ。とりあえず地図が表示されます。
参考にさせて頂きました。Swift Docs 地図の表示
下記のファンクションを使用します。
これは地図内を移動したり、縮尺を変えたりした時に通知されるファンクションです。
このファンクションを利用し、地図に変化があった場合、その都度距離を取得します。
下記内容に変更します。
iPhoneの縦の距離を表示します。
画面上部真ん中と画面下部の真ん中の距離をメートルで表示しています。
コンソールに距離が表示されます。
もし横方向の距離を取得したい場合は下記に変更します。
画面左真ん中と画面右真ん中の距離をメートルで表示しています。
受け取った距離を使ってAPIに投げれば画面上の情報の取得が可能です。
Pages
▼
2015年3月24日火曜日
2015年3月14日土曜日
EC CUBE 2.11系でプラグインを実装する方法
2.12系からプラグインがボタンをクリックするだけで導入できますが、2.11系まではプラグインのインストール機能が無いため、インストールができません。
がしかし、2.11系でもインストールが可能です。
今回は「最近チェックした商品」を導入してみます。

クリックするとプラグインページに飛びます。
ダウンロードして、解凍します。
ブロックの設定
管理画面のデザイン>PC>ブロック設定>ブロックを新規入力で
ブロック名:最近チェックした商品
ファイル名:plg_checkeditems
内容にダウンロードしたプラグインのフォルダ内の「templates」フォルダ内のtplファイル(plg_checkeditems.tpl)をコピペ。
tplファイルとphpファイルの紐付けをデータベースから行います。
データベースへアクセスし、dtb_blocのphp_pathに「frontparts/bloc/plg_checkeditems.php」と記入
プラグインのフォルダ内のplg_checkeditems.phpをECCUBEのフォルダhtml>frontparts>bloc内にコピペ
plg_checkeditems.phpを編集します。
下記行を
下記に変更
プラグインのフォルダ内の「LC_Page_FrontParts_Bloc_CheckedItems.php」をECCUBEフォルダのdata>class>pages>frontparts>bloc内にコピペ
LC_Page_FrontParts_Bloc_CheckedItems.phpを編集します。
下記行を削除
下記行を
下記に変更
下記行を
下記に変更
クッキーに商品へのアクセスを保存する
ECCUBEのフォルダのdata>class>pages>products>LC_Page_Products_Detail.phpを編集
下記ログイン判定の下に追加
下記の様に追記します
管理画面のデザイン管理>レイアウト設定から設置したら表示されます。
細かい表記などが表示されていない場合は適時tplファイルを修正。
まとめ
プラグインのブロック追加
DBのブロック情報の変更
プラグイン内のファイルを設置
各ファイルのパスを通す
がしかし、2.11系でもインストールが可能です。
今回は「最近チェックした商品」を導入してみます。

クリックするとプラグインページに飛びます。
ダウンロードして、解凍します。
ブロックの設定
管理画面のデザイン>PC>ブロック設定>ブロックを新規入力で
ブロック名:最近チェックした商品
ファイル名:plg_checkeditems
内容にダウンロードしたプラグインのフォルダ内の「templates」フォルダ内のtplファイル(plg_checkeditems.tpl)をコピペ。
tplファイルとphpファイルの紐付けをデータベースから行います。
データベースへアクセスし、dtb_blocのphp_pathに「frontparts/bloc/plg_checkeditems.php」と記入
プラグインのフォルダ内のplg_checkeditems.phpをECCUBEのフォルダhtml>frontparts>bloc内にコピペ
plg_checkeditems.phpを編集します。
下記行を
require_once PLUGIN_UPLOAD_REALDIR . 'CheckedItems/LC_Page_FrontParts_Bloc_CheckedItems.php';
下記に変更
require_once CLASS_REALDIR . 'pages/frontparts/bloc/LC_Page_FrontParts_Bloc_CheckedItems.php';
プラグインのフォルダ内の「LC_Page_FrontParts_Bloc_CheckedItems.php」をECCUBEフォルダのdata>class>pages>frontparts>bloc内にコピペ
LC_Page_FrontParts_Bloc_CheckedItems.phpを編集します。
下記行を削除
$plugin = CheckedItems::getPlgInfo();
require_once PLUGIN_UPLOAD_REALDIR . 'CheckedItems/CheckedItems.php';
下記行を
$save_count = $plugin['item_count'];
下記に変更
$save_count = 30 //保存したい件数、今回は30件
下記行を
$arrItem = CheckedItems::getCookieArray();
下記に変更
$arrItem = $_COOKIE['product'];
クッキーに商品へのアクセスを保存する
ECCUBEのフォルダのdata>class>pages>products>LC_Page_Products_Detail.phpを編集
下記ログイン判定の下に追加
// ログイン判定
if ($objCustomer->isLoginSuccess() === true) {
//お気に入りボタン表示
$this->tpl_login = true;
$this->is_favorite = SC_Helper_DB_Ex::sfDataExists('dtb_customer_favorite_products', 'customer_id = ? AND product_id = ?', array($objCustomer->getValue('customer_id'), $product_id));
}下記の様に追記します
// ログイン判定
if ($objCustomer->isLoginSuccess() === true) {
//お気に入りボタン表示
$this->tpl_login = true;
$this->is_favorite = SC_Helper_DB_Ex::sfDataExists('dtb_customer_favorite_products', 'customer_id = ? AND product_id = ?', array($objCustomer->getValue('customer_id'), $product_id));
}
//最近チェックした商品追加
$this->setItemHistory($product_id);
//最近チェックした商品追加
function setItemHistory($product_id) {
$cnt = 0;
// プラグイン情報を取得.
// $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode("CheckedItems");
//保存期間
$save_limit = 30;
//保存件数
$item_count = 30;
$arrDisp = $_COOKIE['product'];
$cnt = count($arrDisp);
//重複項目のチェック
$DispFlg = true;
if (isset($_COOKIE['product'])) {
foreach ($_COOKIE['product'] as $name => $value) {
if($value == $product_id){
$DispFlg = false;
}
}
}
//クッキーにセット
if($DispFlg){
$disp_num = $item_count;
if($cnt == 0){
setcookie('product[' .$cnt .']', $product_id,time()+60*60*24*$save_limit,"/" );
}else{
$arrCookie = $_COOKIE['product'];
$arrCookie[] = $product_id;
//商品保存処理
if(count($arrCookie) > $disp_num){
array_shift($arrCookie);
}
foreach ($arrCookie as $key => $val) {
setcookie('product[' .$key .']', $val,time()+60*60*24*$save_limit,"/" );
}
}
}
}管理画面のデザイン管理>レイアウト設定から設置したら表示されます。
細かい表記などが表示されていない場合は適時tplファイルを修正。
まとめ
プラグインのブロック追加
DBのブロック情報の変更
プラグイン内のファイルを設置
各ファイルのパスを通す
2015年3月12日木曜日
EC CUBE3のインストール(β版)
β版のECCUBE3を macのローカル環境(MAMP Mysql)へインストールしてみます。
コマンドラインを立ち上げ
下記コマンドを打ち込んでgithubからeccbe3をクローンする。
今回はローカルで動かすので、MAMPのhtdocsフォルダにダウンロード。
フォルダ内へ移動
composerをインストールします。
次にMAMPを立ち上げ、phpmyadminから適当な名前のDBを作成しておきます。
次に、インストールしたECCUBEのフォルダの中の「eccube_install.sh」をエディタで開きます。
インストールに必要な修正は以下の部分。
-そのまま
-そのまま
-そのまま
-ローカルのURL、http://localhost:8888/ec-cube/html/
-ローカルのURL、http://localhost:8888/ec-cube/html/
-ローカルのURL、/ec-cube/html/
-そのまま
-そのまま
-localhost
-上記で作ったDBの名前
-自分のDBのユーザー名
-自分のDBのパス
-そのまま
-自分のDBのユーザー名
-そのまま
-localhost
-そのまま
保存したらインストール可能です。
下記コマンドでインストールが始まります。
コマンドラインを立ち上げ
下記コマンドを打ち込んでgithubからeccbe3をクローンする。
今回はローカルで動かすので、MAMPのhtdocsフォルダにダウンロード。
git clone http://github.com/EC-CUBE/ec-cube.git
フォルダ内へ移動
cd ec-cube
composerをインストールします。
curl -sS https://getcomposer.org/installer | php
次にMAMPを立ち上げ、phpmyadminから適当な名前のDBを作成しておきます。
次に、インストールしたECCUBEのフォルダの中の「eccube_install.sh」をエディタで開きます。
インストールに必要な修正は以下の部分。
-そのまま
CONFIG_PHP="app/config/eccube/config.php"
-そのまま
ADMIN_MAIL=${ADMIN_MAIL:-"admin@example.com"}-そのまま
SHOP_NAME=${SHOP_NAME:-"EC-CUBE SHOP"}-ローカルのURL、http://localhost:8888/ec-cube/html/
HTTP_URL=${HTTP_URL:-"http://test.local"}-ローカルのURL、http://localhost:8888/ec-cube/html/
HTTPS_URL=${HTTPS_URL:-"http://test.local/"}-ローカルのURL、/ec-cube/html/
ROOT_URLPATH=${ROOT_URLPATH:-"/"}-そのまま
DOMAIN_NAME=${DOMAIN_NAME:-""}-そのまま
ADMIN_DIR=${ADMIN_DIR:-"admin/"}-localhost
DBSERVER=${DBSERVER-"127.0.0.1"}-上記で作ったDBの名前
DBNAME=${DBNAME:-"cube3_dev"}-自分のDBのユーザー名
DBUSER=${DBUSER:-"cube3_dev_user"}-自分のDBのパス
DBPASS=${DBPASS:-"password"}"mysql" ) #-- DB Seting MySQL
-そのまま
MYSQL=mysql
-自分のDBのユーザー名
ROOTUSER=root
-そのまま
ROOTPASS=$DBPASS
-localhost
DBSERVER="127.0.0.1"
-そのまま
DBPORT=3306
;;
保存したらインストール可能です。
下記コマンドでインストールが始まります。
sh eccube_install.sh mysql