こんにちは、岡本と申します。
1.Google Mapの起動が非常に遅い。
googlemapはデスクトップ向けに作られたものなのでモバイルにもってくるとやはり、遅さとか目立ってしまうと思います。
flash版は実測2,3秒ぐらいで表示できるのでそちらの利用はどうでしょうか。
2.地図が表示された後、マルチタッチでズームイン・アウトができない。
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
マルチタッチのモードをTOUCH_POINTで指定しているのでピンチズームなどの
ジェスチャーイベントを受け取る場合は
Multitouch.inputMode = MultitouchInputMode.GESTURE;
↑こう指定しなければいけません。
またジェスチャーイベントもTransformGestureEvent.GESTURE_ZOOM
を指定する必要があります。
以前に作ったサンプルコードがありましたので参考になれば幸いです。
※ActionScriptモバイルプロジェックト用のサンプルです。
※flash用のmap_1_20.swcを使っています。
下のサンプルをベースにつくったplaybook用のアプリもだしていますので
デバイスをお持ちであればプレビューできます。
http://appworld.blackberry.com/webstore/content/45769?lang=en
package
{
import com.google.maps.LatLng;
import com.google.maps.Map;
import com.google.maps.MapEvent;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TransformGestureEvent;
import flash.geom.Point;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
public class SampleMap extends Sprite
{
public var map:Map;
public function SampleMap()
{
this.addEventListener(Event.ADDED_TO_STAGE,onInit);
}
protected function onInit(event:Event):void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
map = new Map();
map.key = "";
map.url = "";
map.sensor = "true";
map.setSize(new Point(stage.stageWidth,stage.stageHeight));
map.addEventListener(MapEvent.MAP_READY,onMapReady);
addChild(map);
if (Multitouch.supportsTouchEvents) {
Multitouch.inputMode = MultitouchInputMode.GESTURE;
map.addEventListener(TransformGestureEvent.GESTURE_ZOOM,onMapGestureZoom);
map.addEventListener(MouseEvent.MOUSE_UP,onMapMouseOut);
}else {
//マルチタッチ非対応時の処理
}
}
protected function onMapGestureZoom(e:TransformGestureEvent):void
{
map.disableDragging();
var ratio:Number = 1 + (e.scaleX -1)/20;
map.setZoom(map.getZoom()*ratio);
}
private function onMapMouseOut(e:MouseEvent):void{
map.enableDragging();
}
protected function onMapReady(e:Event):void
{
map.setCenter(new LatLng(35.68126, 139.76804),14);