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

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;
    }
//}

この記事がお役に立ちましたらシェアお願いします

11 views

図形を描画して内部の面積を計測する

iOSアプリ上のGoogleMapで図形を描画し、そのパス内部の面積を計測することができます。

まずは図形を描画します。

// Create a rectangular path
let rect = GMSMutablePath()
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))

// Create the polygon, and assign it to the map.
let polygon = GMSPolygon(path: rect)
polygon.fillColor = UIColor(red: 0.25, green: 0, blue: 0, alpha: 0.05);
polygon.strokeColor = .black
polygon.strokeWidth = 2
polygon.map = mapView

面積を計測

let a: Double = GMSGeometryArea(polygon.path!)

JavaScriptのAPIではパスが閉じている必要がありましたが、
こちらは閉じていなくても閉じているものと仮定してくれるようです。

ただ、実際に使ってみた結果、JavaScript APIのほうで測った面積と24m²ほど差がありました。

JavaScriptでの計測はこちら→GoogleMapで面積計測(v3)

Xcode: 9.4.1
Swift: 3.3
OS: High Sierra 10.13.6

この記事がお役に立ちましたらシェアお願いします

243 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);

続きを読む…»

この記事がお役に立ちましたらシェアお願いします

650 views

GoogleMap 表示範囲内のみマーカー表示

GoogleMap上にたくさんのマーカーを描画したい場合、マーカーが多過ぎて処理が重くなるのを防ぎたいので、
予め地図の表示範囲内のみ、マーカーを描画するようにしてみたいと思います。

まずはイベントを受け取り、処理できるようデリゲート[GMSMapViewDelegate]を追加します。

class SampleViewController: UIViewController, GMSMapViewDelegate {

GoogleMapオブジェクトにデリゲートを設定します。

googleMap.delegate = self

マーカーを追加する際、後から表示/非表示を変更したいので、配列のマーカーオブジェクトを宣言しておきます。

var markers : [GMSMarker] = []

マーカーを追加したときに先ほどの配列に追加します。

let marker: ...
markers.append(marker)

続きを読む…»

この記事がお役に立ちましたらシェアお願いします

1,072 views

GoogleMapに現在地を表示

Info.plistに位置情報の利用を追加します。
GoogleMapに現在地を表示するだけなら、CoreLocationは必要ないようです。

Privacy - Location When In Use Usage Description

Valueには「現在地の情報を利用します」等としておきます。

GoogleMapの表示方法については[iOSアプリでGoogleMapを使う]をご覧ください。

位置情報を利用して現在地を表示する

googleMap.isMyLocationEnabled = true

現在地ボタンを表示する

googleMap.settings.myLocationButton = true

Xcode: 8.2.1
Swift: 3.1
OS: Sierra 10.12

この記事がお役に立ちましたらシェアお願いします

617 views