ラベル googleMaps の投稿を表示しています。 すべての投稿を表示
ラベル googleMaps の投稿を表示しています。 すべての投稿を表示

2016/03/22

[Google Map][JavaScript]windowリサイズイベントを受け取る

google mapを表示させてwindow resizeの場合にイベントを受けとるにはどうすればいいのだろうか?

google.maps.event.addDomListenerを使えばおk

具体的には下のようなプログラム。

jQuery(function($){
  var map;
  window.googlemapCallBack = function(){
    map = new google.maps.Map( $('._googleMap'), {
      center: {lat: 0, lng: 0},
      zoom: 11
    });
    google.maps.event.addDomListener(
      window, 
      'resize', 
      function(){
       google.maps.event.trigger( map, 'resize' );
    });
  };
  var script = document.createElement('script');
  script.src = "https://maps.googleapis.com/maps/api/js?key=XXXX&callback=googlemapCallBack";
  $('head')[0].appendChild(script);
});

2016/03/21

[Google Map][JavaScript]マーカーを画像にする

google map上に表示したマーカーを画像にするにはどうすればいいのだろうか?

iconプロパティーに画像のパスを設定すればおk。

具体的には下のようなプログラム。

jQuery(function($){
  var map;
  window.googlemapCallBack = function(){
    map = new google.maps.Map( $('._googleMap'), {
      center: {lat: 0, lng: 0},
      zoom: 11
    });
    var image = '../img/foo.png';
    new google.maps.Marker ({
      position:{lat: 0, lng: 0},
      map:map,
      title: 'hoge',
      icon:image
    });
  };
  var script = document.createElement('script');
  script.src = "https://maps.googleapis.com/maps/api/js?key=XXXX&callback=googlemapCallBack";
  $('head')[0].appendChild(script);
});

2016/03/20

[Google Map][JavaScript]ロード時のコールバックを設定

どうやら、google map sdkでロードした時のコールバックが設定できるみたい。

window.googlemapCallBack = function(){
 
};
var script = document.createElement('script');
script.src = "https://maps.googleapis.com/maps/api/js?key=XXXX&callback=googlemapCallBack";
$('head')[0].appendChild(script);
callbackパラメータに関数名を設定すればおk

2016/03/19

[Google Map][JavaScript]RequireJSの中でGoogle Mapを使う

RequireJSの中でgoogle map sdk を使いたい場合はどうすればいいのだろうか?

jQueryがある状態で以下のようにscripを組んだらロードすることができました。

require([
  'jquery'
], function($){
  $(function(){
    var script = document.createElement('script');
    script.src = "https://maps.googleapis.com/maps/api/js?key=XXXX&callback=googlemapCallBack";
    $('head')[0].appendChild(script);
  });
});
これ結局、動的にscriptタグを作ってロードしているだけなので、別にrequirejsを使わなくても適用できる技なんだけどね。

2013/12/25

[Google]Chrome AppsがAndroidとiOSに提供されるかも

これはすごい。

The Next Webは、グーグルがデスクトップ用Chrome AppsをiOSやAndroidのモバイル・エコシステムに対応する方針だと報じました。

via:報道:グーグル、Chrome AppsをAndroidとiOSに提供予定
これが普及したらHTML5を使ったアプリが一気に広がりそうな予感。

問題は課金をどうするかってことになると思うんだけど。

webアプリだと課金しずらい雰囲気があるから、そこも含めてどうするかってところだと思った。

2013/04/03

[Google Maps]Google Maps Engine

なかなかおもしろい機能がリリースされました。

Googleは何年も前からユーザーが手持ちの地理空間データを利用してカスタム地図が作成できるプラットフォームとしてGoogle Maps Engineを提供してきた。

via:Google、Maps Engine Liteベータ版をリリース―高度なカスタム・マップが簡単に作れる
ちょっと変化球かもしれないが、これ、ゲームの地図とかに使えないのだろうか?

2012/12/15

[iOS][googlemap]SDKリリース

先日、iOS版のgoogle mapをインストールしたのですが、さすが、グーグル。
気がきいている。

GoogleはGoogle MapsのiOSアプリを完全にゼロから新作し、さらにそのSDKもリリースした。つまりデベロッパは自分のアプリの中でGoogle Mapsを利用できる。そのSDKは一定のURLにアクセスするだけだから、どこからでもMapsを呼び出せるのがミソだ。

via:Google MapsのiOSアプリに早くもSDKが提供–無理してAppleの地図を使わなくてすむ
もう、一回、iOS用に対応したgoogle map sdkを勉強する必要がありますが、不具合の多い、appleのデフォルトの地図を使わなくてすむでの、これは影響力でかいですね。
Photobucket
詳細は、sdkのページで閲覧することができます。

2012/12/14

[iOS]google製google mapアプリリリース

キタ!!

Phoneユーザーに朗報だ! ついにグーグルが今日iPhone向けのグーグルマップのアプリを発表した。グーグルのプロダクトマネージャーの牧田信弘氏によれば、このアプリはまったく新しいユーザーインターフェイスになっているという。これはAndroid版とも違うインターフェイスとなっている。すでにAppStoreからダウンロードできる。

via:待望のiPhone版グーグルマップが登場、今日からダウンロード開始
さっそくダウンロードしてみたが、最高の一言につきる。
前のiOSでデフォルトで入っていた地図よりも格段にきれいになっている。

これを承認したappleは、地図サービスの現時点では完全敗退と言えるのではないだろうか?
Photobucket
iTunesで無料なので、是非、おとしてほしい。

2011/10/28

[Google Maps]有料化?

え、嘘、まじで!!

米Googleは27日、Google Maps APIの利用者に対して課金する方法の詳細を発表した。

Googleは、Google Maps APIの利用規約を今年4月に改定し、10月1日から同APIの利用上限を定めることを発表していた。

via:Google Maps API有料化の詳細発表、該当ユーザーは2012年初めに強制課金開始
というわけで、実際に、どうなるのでしょうか?

Service           Usage limit     1,000 excess map loads
                    (per day)     (in U.S. dollars)
JS Maps API v3         25,000        $4
JS Maps API v3          2,500        $4[1] / $8[2]
 styled maps   
Static Maps API        25,000        $4
Static Maps API         2,500        $4[1] / $8[2]
styled maps     
Street View Image API  25,000        $4
JS Maps API v2         25,000        $10

via:How much will excess map loads purchased online cost?
25000アクセスにつき4ドルかー。

結構、請求されているブログないし、サイトが多い気がするなー。

やっぱり、google側としては、広告だけでは収益性が脆弱なのだろうな。

2011/08/16

[googleMaps]infoウィンドウを地図表示時に出力

昨日のエントリーでは、マーカーをクリックしたときに、infoWindowを表示するという仕様でしたが、今日は、地図を表示したときに最初から開いている方法について。

google.maps.InfoWindowメソッドの引数にpositionを追加すればオッケーのようです。

<!DOCTYPE html>

<html>
<head>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>

<title>Google Maps Test</title>
</head>
<body>
<div id="map_canvas_09" style="width:400px; height:500px;">
</div>
<script type="text/javascript">
(function(){
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8
, center: latlng
, mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(
document.getElementById("map_canvas_09")
, myOptions
);


var infowindow = new google.maps.InfoWindow({
content: "hello world",
position:latlng
});
infowindow.open(map);

}());
</script>
</body>
</html>

openメソッドで追加先となるオブジェクト指定するのを忘れないように。

実行結果は下の通り

2011/08/15

[googleMaps]infoウィンドウを表示

タイトル通りなのだが、infoウィンドウを表示する方法について調査
Info Windowsを読みながら実装してみました。

<!DOCTYPE html>

<html>
<head>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>

<title>Google Maps Test</title>
</head>
<body>
<div id="map_canvas_09"
style="width:400px;
height:500px;"></div>
<script type="text/javascript">
(function(){
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8
, center: latlng
, mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(
document.getElementById("map_canvas_09")
, myOptions
);


var infowindow = new google.maps.InfoWindow({
content: "hello world"
});

var marker = new google.maps.Marker({
position: latlng,
map: map
});

google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}());
</script>
</body>
</html>

google.maps.InfoWindowメソッドの引数contentにdomが使えるのがなんとも便利。

上の例では、マーカーをクリックしたときに、InfoWindowが表示される仕掛けになっています。
実行結果は下の通り。

地図が表示された瞬間にInfoWindowを出すことは可能なのだろうか?

2011/08/12

[google map]イベントの追加

イベントの追加方法をMap Eventsで調べました。

そこで今回、マーカーがクリックされたときのコーディング方法を下に掲載しました。

<!DOCTYPE html>

<html>
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>

<title>Google Maps Test</title>
</head>
<body>
<div id="map_canvas_08" style="width:400px; height:500px;"></div>
<script type="text/javascript">
var latlng_08 = new google.maps.LatLng(-34.397, 150.644);
var myOptions_08 = {
zoom: 8
, center: latlng_08
, mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map_08 = new google.maps.Map(
document.getElementById("map_canvas_08")
, myOptions_08
);


var marker_08 = new google.maps.Marker({
position: latlng_08,
map: map_08
});

//マーカーに対してイベントを追加
google.maps.event.addListener(marker_08, 'click', function() {
alert("hello google map");
});
</script>
</body>
</html>

google.maps.event.addListenerメソッドでイベントの追加を行います。

第一引数は、イベントをアタッチする対象オブジェクトで、第二引数は、イベントの種類。
なんといってもすばらしいのは、ダブルクリックにも対応しているところ。

最後は、イベントが発生したときに呼ばれる関数です。

デモを貼り付けました。


2011/08/11

[google map]ドラッグを無効にする方法

昨日のエントリーで、オリジナルの地図を表示する方法を調べたのですが、そのときに、地図をドラッグしてほしくないなーっと思い。

そんな都合のいいこといくのかなーっと思って調べたあった!!
google.maps.MapOptionsにーーー

google.maps.Map()メソッドの第二引数にオプションを設定することができるのですが、draggableキーの値をfalseにすることで、ドラッグを回避することができます。

便利!!

2011/08/10

[google map]オリジナル地図を表示

google mapでオリジナルの地図を表示する方法を調べました。

Custom Map Typesを参考にしながら、実際にコーディングを行なったのは↓

<!DOCTYPE html>

<html>
<head>
<meta http-equiv="Content-Type" content="Text/html; charset=UTF-8" />
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false">
</script>
<title>Google Map Test</title>
<script type="text/javascript">
var questTypeOptions = {
getTileUrl: function(coord, zoom) {
if(coord.x == 0 && coord.y == 0){
return "画像ファイル";
}
return null;
},
tileSize: new google.maps.Size(371, 370),
isPng: false,
maxZoom: 2,
minZoom: 1,
name:"アレフガルド"
};

var questMapType = new google.maps.ImageMapType(questTypeOptions);

function init(){
var LatLng = new google.maps.LatLng(45,-50);

var Options = {
center:LatLng,
zoom:1,
mapTypeControlOptions:{
mapTypeIds:["dragonquestmap"]
},
panControl:false,
zoomControl:false,
mapTypeControl:true,
scaleControl:false,
streetViewControl:false,
overviewMapControl:false,
disableDoubleClickZoom:false,
scrollwheel:false,
rotateControl:false,
keyboardShortcuts:false,
draggable:false
};

var map = new google.maps.Map(
document.getElementById("map_canvas_07"),
Options
);
map.mapTypes.set(
'dragonquestmap',
questMapType
);
map.setMapTypeId('dragonquestmap');

google.maps.event.addListener(map, 'click', function(event) {
console.log(event)
var evntLatLng = event.latLng;
});
}
</script>
</head>
<body onload="init();">
<div id="map_canvas_07"
style="width: 400px; height: 400px;">
</div>
</body>
</html>

いくつかポイントがあって、まず、google.maps.Mapのインスタンス変数を宣言するときに、

mapTypeControlOptions:{

mapTypeIds:["dragonquestmap"]
}

という形で、オリジナルのmapTypeIdを設定する必要があります。

さらに、mapTypesを設定するために、google.maps.ImageMapTypeインスタンス変数を宣言しているところも重要。

JSON形式で引数にセットするのだが、nameは地図上に、実際に表示されるmapTypesとなります。

オリジナルの地図を表示できるということを知ったのでチャンレジしてみたのがドラクエ1のマップ。
地図データはこちらからを参考にしました。

作っていて、すごく懐かしい気分になってしまった。

今度、wiiでドラクエ1、2、3とリリースされるようなので、話題のタイミングとしてはよかったかもしれない。


2010/10/07

[Google Map V3]マーカーを表示

する方法について
Markersを読みながらソースを作ってみました。

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>

<title>Google Maps Test</title>
</head>
<body>
<div id="map_canvas_06" style="width:400px; height:500px;"></div>
<script type="text/javascript">
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8
, center: latlng
, mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map_06 = new google.maps.Map(
document.getElementById("map_canvas_06")
, myOptions
);

//マーカーを追加する
var marker = new google.maps.Marker({
position: latlng,
map: map_06
});
</script>
</body>
</html>

実行結果はこんな感じ。


確かにマーカーが表示されました。

2010/09/09

[Google Map V3]コントロールの非表示・表示

以前、UIのコントロールの部分について書き、その後、すべてのコントロールを非表示にする方法に書きました。

今日は、各コントロールを表示するかどうか操作する方法について
new google.maps.Map()メソッドの第二引数に、JSONファイルを入れるのですが、そのkeyに

{
navigationControl: boolean,
mapTypeControl: boolean,
scaleControl: boolean
}

をそれぞれ設定するばいいそうです。
つまり、
Navigationを操作したい場合は、navigationControlを
MapTypeを操作したい場合は、mapTypeControlを
そして、Scaleは、scaleControlを
それぞれ、booleanで指定すれば、表示、非表示をコントロールすることができます。

サンプルを作りました。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas { height: 100% }
</style>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript">
</script>
</head>
<body>

<div id="map_canvas_05" style="width:400px; height:500px;"></div>
<script type="text/javascript">
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8
, center: latlng
, mapTypeId: google.maps.MapTypeId.ROADMAP
, navigationControl: false
, mapTypeControl: false
, scaleControl: true
};
var map_05 = new google.maps.Map(
document.getElementById("map_canvas_05")
, myOptions
);
</script>
</body>
</html>

上の例では、navigationとmapTypeを表示せず、代わりに、scaleを表示させています。

実行結果は、このようになります。



2010/09/07

[Google Map V3]コントローラーをすべてはずす方法について

前回は、各コントローラーについて書きましたが、今回は、そのコントローラーを表示しない方法について書きたいと思います。

基本的には、Disabling the Default UIに書いてあるように、地図作成時に、 disableDefaultUIをtrueに設定すればオッケーなのです。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas { height: 100% }
</style>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript">
</script>
</head>
<body>

<div id="map_canvas_04" style="width:400px; height:500px;"></div>
<script type="text/javascript">
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8
, center: latlng
, mapTypeId: google.maps.MapTypeId.ROADMAP
, disableDefaultUI: true
};
var map_04 = new google.maps.Map(
document.getElementById("map_canvas_04")
, myOptions
);
</script>
</body>
</html>

実行結果は、ご覧の通り


次回は、各コントローラーを独立して追加する方法について書きたいと思います。

2010/09/03

[Google Map V3]UIについて

Google Mapでは、現在、3種類のコントロールがサポートされているようです。
・Navigation control
・Scale control
・MapType control

各コントロールが何かについては、言葉で説明するよりも画像で表現した方がわかりやすいと思ったので、小さいバージョンと大きいバージョンの2つを用意しました。


で、この各コントローラーが切り替わるタイミング、対応状況は、The Default UIを引用すると下のようになります。

ControlLarge ScreensSmall ScreensiPhoneAndroid
NavigationLarge Pan/Zoom for sizes larger than 400x350pxSmall Mini-Zoom for sizes smaller than 400x350pxNot present"Android" control
MapTypeHorizontal Bar for screens larger than 320px wideDropdown for screens smaller than 320px wideSame as Large/Small ScreensSame as Large/Small Screens
ScaleNot presentNot presentNot presentNot present

この表からは結局、Scale controlをサポートするには手動でonにする必要性があるということ

Photobucket
ちなみに、上の画像は、Large Screensで、下は、small screensの場合
Photobucket

引き続き、各コントローラーの設定方法について調査していきたい。

2010/09/02

[Google Map V3]onloadを使わずに地図を表示する方法

JavaScriptでは、bodyタグにonloadを使って関数をコールする方法が、一般的ですが、これを使わずに、load時に地図を表示する方法について書きたいと思います。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas { height: 100% }
</style>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript">
function initialize(){
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8
, center: latlng
, mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map_03 = new google.maps.Map(
document.getElementById("map_canvas_03")
, myOptions
);

}
google.maps.event.addDomListener(
window
, 'load'
, initialize
);
</script>
</head>
<body>

<div id="map_canvas_03" style="width:400px; height:500px;"></div>

</body>
</html>

たぶん、V2にもあったのかもしれませんが、Google Map APIに標準装備されているaddDomListenerメソッドを使えば、ブラウザを意識せずに、イベント処理を走らせることができるみたいです。

今回は、onloadの処理なので、
google.maps.event.addDomListener(
window
, 'load'
, 関数名
);
と設定すればオッケーです。

他にも、onclickに相当するclickや、Google Mapオリジナルのzoom_changedなども追加できるようです。

この部分についてももっと調査する必要がありそうですね。

2010/09/01

[Google Map V3]地図を複数同時に表示する

前回は、一つの地図を表示するだけでしたが、今回は、複数を同時に表示する方法について。

インスタンス作成時に、それぞれ別に変数に設定すれば表示することができます。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas { height: 100% }
</style>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript">
</script>
</head>
<body>

<div id="map_canvas_01" style="width:400px; height:500px;"></div>
<br>
<div id="map_canvas_02" style="width:400px; height:500px;"></div>
<script type="text/javascript">
(function(){
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8
, center: latlng
, mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map_01 = new google.maps.Map(
document.getElementById("map_canvas_01")
, myOptions
);

latlng = new google.maps.LatLng(35.658704, 139.745408);
var myOptions = {
zoom: 15
, center: latlng
, mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map_02 = new google.maps.Map(
document.getElementById("map_canvas_02")
, myOptions
);

}());

</script>


</body>
</html>

実行結果は、このようになります。