カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

テキストエリアの途中に文字を挿入する

テキストエリアの先頭や末尾に文字を追加するのは簡単ですが、途中(カーソル位置)に挿入するにはひと手間必要です。

例として適当なフォームを作成します。

<form name="myForm">
    <textarea name="myTextarea"></textarea>
    <input type="submit" value="送信">
</form>

次に以下のようなボタンを作ります。

<button onclick="addText();">文字追加</button>

ボタンを押したときに実行されるJavaScriptが以下のようになります。

function addText()
{
    var textarea = document.myForm.myTextarea;
    var pos      = textarea.selectionStart;

    var before   = textarea.value.substr(0, pos);
    var after    = textarea.value.substr(pos);

    textarea.value = before + "追加する文字列" + after;
}
0
221 views

Geocoder APIを利用した座標変換

Geocoder APIを使えば住所から座標を取得することができます。
今回はJavaScriptではなくHTTPリクエストで座標を取得する方法をご紹介します。

取得するデータはJSON形式で受け取るようにしています。
使用する言語はPHPです。

まずはリクエストするURLとAPIキーを宣言

$googleapis = "https://maps.googleapis.com/maps/api/geocode/json";
$api_key    = "YOUR API KEY";

続いてパラメーターを追加していきます。
検索する住所を追加

$googleapis .= "?address=" . $address;

国を指定(同じ名前の地名が中国等にあるとそちらの座標になってしまうことがあります)

$googleapis .= "&components=country:JP";

APIキーを設定します

$googleapis .= "&key=" . $api_key;

file_get_contents関数を使ってデータを取得します。

$data = file_get_contents($googleapis);

返ってきたJSONデータを解析して座標を取り出します。

$json = json_decode($data);

$lat = $json->results[0]->geometry->location->lat;
$lng = $json->results[0]->geometry->location->lng;

if( $json->status == "OK" ) {
    echo $lat . "," . $lng;
}

詳細な仕様は公式ドキュメントを参照ください。
https://developers.google.com/maps/documentation/geocoding/intro#GeocodingRequests

0
226 views

iOS12.3.1でイベントdeviceorientationが動作しない

iOS 12.3.1のSafariでは、デフォルトでセンサーの値が取得できなくなったようです。

window.addEventListener("deviceorientation", function(event){}, true);

上記イベントがキャッチできません。

iOS 12.1では動作することを実機で確認しました。

対応策としては[設定]-[Safari]-[モーションと画面の向きのアクセス]をONにすると
キャッチできるようになりますが、一般ユーザーにこの設定を変えてもらうわけにはいきませんよね;
他に何か有用な情報を発見したら追記したいと思います。

0
623 views

GoogleMapにGeoJsonデータを読み込んで表示する

GoogleMapに図形等を描画するのに非常に便利な方法がありました。

//GoogleMapインスタンスを生成(v3)
map = new google.maps.Map(document.getElementById("map"), { center: new google.maps.LatLng(35.6585809608813, 139.74543258547783) } );

// GeoJsonを読み込む
map.data.loadGeoJson('sample.geojson');

// スタイルを設定
map.data.setStyle(function(feature) {

    var myStyle = {
        fillColor: "#9AD2AE",
        fillOpacity: 0.5,
        strokeColor: "#1EB26A",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        clickable: true,
        visible: true,
        zIndex: 1
    };

    return (myStyle);

});

sample.geojsonの内容

{
"type": "FeatureCollection",
"name": "sample",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { "name": "サンプル1" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 139.74472479682004, 35.659171090464596 ], [ 139.74610447883606, 35.659171090464596 ], [ 139.74610447883606, 35.65809388391181 ], [ 139.74472479682004, 35.65809388391181 ], [ 139.74472479682004, 35.659171090464596 ] ] ] } }
]
}

今回はポリゴンのみですが、他にポイントやポリラインもGeoJsonで読み込み可能です。
GeoJsonは統一された規格なので汎用性があり便利です。

0
824 views

GoogleMaps 数字アイコンを表示する

targetPoint = new google.maps.LatLng(lat, lng);

markerOptions.map = map;
markerOptions.position = targetPoint;
markerOptions.icon = makeNumIcon(1, 'ff7e73');

var marker = new google.maps.Marker(markerOptions);

//ラベル位置の調整(x, y)
marker.icon.labelOrigin = new google.maps.Point(9, 0);

//ラベルを設定
marker.setOptions({label:{text: '1',color: '#000',fontSize: '20px'}});

marker.setMap(map);


// 数字アイコン作成
//{
    makeNumIcon = function(n, color)
    {
        var icon_color = color || 'ff7e73'; //カラーが指定されなかった場合はデフォルトのカラー

        //文字ありのピン
        //var icon = new google.maps.MarkerImage('//chart.apis.google.com/chart?chst=d_map_pin_letter&chld='+ n + '|' + icon_color + '|000000');

        //文字ありのピン(フォントサイズ等指定)
        //var icon = new google.maps.MarkerImage('//chart.apis.google.com/chart?chst=d_map_spin&chld=0.8|0|' + icon_color + '|16|b|'+ n);

        //文字なしのピン
        var icon = new google.maps.MarkerImage('//chart.apis.google.com/chart?chst=d_map_spin&chld=0.5|0|' + icon_color + '|16|b|');

        return icon;
    }
//}
0
1,073 views

Javascript 配列

JavaScriptの配列の基本的な使い方

配列の宣言

var array = new Array();

または

var array = [];

例)

var array = new Array("a", "b", "c");
var array = ["a", "b", "c"];

要素の追加

先頭に追加する

var array = ["b", "c"];
array.unshift("a"); //["a", "b", "c"]となる

末尾に追加する

var array = ["a", "b", "c"];
array.push("d"); //["a", "b", "c", "d"]となる

配列の結合

配列を結合し新たな配列を生成します。
(元の配列はそのまま)

var array1 = ["a", "b"];
var array2 = ["c", "d"];

var array = array1.concat(array2); //["a", "b", "c", "d"]となる

続きを読む…»

0
907 views

描画ツールライブラリを使う GoogleMap v3

描画ツールを使うとユーザーが地図上に図形を描画することができます。
実際に使用するクラスは「DrawingManager」になります。

このツールは独立したAPIなので、別途使用することを明記しなくてはなりません。
API読み込みの際にパラメータを追加します。

GoogleMapAPI version 3.26

<script type="text/javascript"
  src="https://maps.googleapis.com/maps/api/js?key=[YOUR_API_KEY]&libraries=drawing">
</script>

実装方法は以下のようになります。

var drawingManager = new google.maps.drawing.DrawingManager();
drawingManager.setMap(map);

様々なオプションを指定して実装する

drawingManager = new google.maps.drawing.DrawingManager({
    drawingMode: google.maps.drawing.OverlayType.MARKER, //CIRCLE, MARKER, POLYGON, POLYLINE, RECTANGLE
    drawingControl: true,
    drawingControlOptions: {
        position: google.maps.ControlPosition.TOP_CENTER,
        drawingModes: ['polygon', 'rectangle'] //['marker', 'polyline', 'rectangle', 'circle', 'polygon']
    },
    polygonOptions: {
        fillColor: '#999999',
        fillOpacity: 0.5,
        strokeWeight: 3,
        clickable: false,
        editable: true,
        zIndex: 1
    },
    rectangleOptions: {
        fillColor: '#999999',
        fillOpacity: 0.5,
        strokeWeight: 3,
        clickable: false,
        editable: true,
        zIndex: 1
    }
});
drawingManager.setMap(map);

続きを読む…»

0
1,508 views

jQueryプラグイン「bxSlider」を使う

スライドショーを実装してくれる「bxSlider」をご紹介します。
これまでにもスライドショーを実装できる色々なプラグインをご紹介しましたが、
最近はこれをよく使います。

bxSlider

まずはjQueryを読み込む。

<script src="./jquery-1.9.1.min.js"></script>

※ちなみに、jQueryが3.1.1だとエラーが発生しました。

続いてbxSliderのファイルを読み込みます。

<link href="./bxslider/jquery.bxslider.css" rel="stylesheet" />
<script type="text/javascript" src="./bxslider/jquery.bxslider.min.js"></script>

スライドさせたい内容を用意します。

<ul class="bxslider">

    <li>
        <img src="./images/exam_picture1.jpg">
    </li>

    <li>
        <img src="./images/exam_picture2.jpg">
    </li>

    <li>
        <img src="./images/exam_picture3.jpg">
    </li>

</ul>

まずは簡単に実装してみましょう。

<script type="text/javascript">
<!--//
(function($) {
    $(document).ready(function(){

        $('.bxslider').bxSlider({
            auto: true,
            autoHover: true,
        });

    });
})(jQuery);
//-->
</script>

続きを読む…»

0
2,121 views

jQueryプラグイン Slider Pro

スライドショーを実装してくれるプラグインです。
IEでも動作し、レスポンシブにも対応しています。

JavaScriptライブラリをダウンロード
jQuery
Slider Pro

まずjQueryは必須です。

<script src="./jquery-1.9.1.min.js"></script>

次にSlider ProのスタイルシートやJSファイルを読み込みます。

<link rel="stylesheet" type="text/css" href="./slider-pro-master/dist/css/slider-pro.min.css" media="screen">
<link rel="stylesheet" type="text/css" href="./slider-pro-master/dist/css/examples.css" media="screen">

<script type="text/javascript" src="./slider-pro-master/dist/js/jquery.sliderPro.min.js"></script>

HTMLを記述します。

<div id="mySlider" class="mySlider slider-pro">

    <div class="sp-slides">

        <div class="sp-slide">

            <img class="sp-image" src="./slider-pro-master/src/css/images/blank.gif" data-src="[画像パス]" data-small="[サムネイル画像パス]">

            <p class="sp-layer sp-white sp-padding" data-horizontal="0" data-vertical="0" data-show-transition="left" data-show-delay="400">
                表示したいキャプション
            </p>

        </div>

    </div>

    <div class="sp-thumbnails">
        <img class="sp-thumbnail" src="[サムネイル画像パス]">
    </div>

</div>

キャプション部分のクラスとパラメーター

クラス
sp-layer キャプションを表示
sp-white 白背景に黒文字
sp-padding 10pxのパディングを設定
パラメーター
data-horizontal 水平固定位置を指定。数値、もしくはパーセンテージ。
data-vertical 垂直固定位置を指定。数値、もしくはパーセンテージ。
data-show-transition スライドの方向。(left, right, up, down)
data-show-delay 自動再生のスライド切り替え時間。単位:10ミリ秒

続きを読む…»

0
5,684 views

GoogleMaps API 標高の取得

GoogleMapのGoogle Maps Elevation APIを使用して標高を取得することができます。
利用にはAPIキーが必須です。詳しくは、[GoogleMap ブラウザAPIキーの取得]を参照してください。

座標オブジェクトを作成します。

var location = new google.maps.LatLng(35.7100627, 139.8085064);

リクエストパラメータを作成します。
座標オブジェウトを配列にします。

var request = { locations: new Array(location) };

ElevationServiceクラスのインスタンスを作成します。

var myElevation = new google.maps.ElevationService();

getElevationForLocationsメソッドを使って標高を取得します。

myElevation.getElevationForLocations(request, function(response, status) {

    if(status == google.maps.ElevationStatus.OK) {

        alert(response[0].elevation + "m");

    } else {

        alert("取得できませんでした。");

    }

});

公式リファレンス:Google Maps Elevation API
https://developers.google.com/maps/documentation/elevation/intro?hl=ja

0
1,593 views