• 締切済み

c++のプログラムについて

c++の勉強をしているのですが、以下の例題のプログラムを記述するにあたって、適した記述がいまいち思いつきません。 例題) 以下のData001.txtファイルを読み込み、エラーを集計する。 a,bを半角英数1文字として、"[ aaaaaaaa ]"であらわすことができる行から、次の"[ aaaaaaaa ]"であらわすことができる行までの "ERROR:bbbbb"で始まる行を"bbbbb"毎に集計する。 結果を、"aaaaaaaa  bbbbb  件数"の形で ※列の区切り文字をタブ文字 ※行の区切り文字を改行文字 として 標準出力へ出力する。 Data001.txt メッシュ[ 5818f4ff ]を読み込みます レベル:4 緯度方向:5120 経度方向:2304 メッシュ[ 5820f4ff ]を読み込みます レベル:4 緯度方向:5120 経度方向:2560 メッシュ[ 5822f4ff ]を読み込みます レベル:4 緯度方向:5120 経度方向:2816 ERROR:KT003 データヘッダ0WのRESERVEDに設定されています ERROR:KT004 データヘッダ1WのRESERVEDに設定されています ERROR:KT005 データヘッダ1WのRESERVEDに設定されています ERROR:KT009 隣接ノード対応情報.自レベル情報.RESERVEDに設定されている                ・                ・ メッシュ[ 6018f4ff ]を読み込みます レベル:4 緯度方向:5376 経度方向:2304 ERROR:SB006 背景種別単位ヘッダのオフセットが不正です ERROR:KT003 データヘッダ0WのRESERVEDに設定されています ERROR:KT005 データヘッダ1WのRESERVEDに設定されています ERROR:MNR07 隣接接続図郭ノードに対応する隣接道路ノード・リンク情報が見つかりません メッシュ[ 6020f4ff ]を読み込みます レベル:4 緯度方向:5376 経度方向:2560 ・                ・               以下続く 以上です。 どうかよろしくお願いします。

みんなの回答

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.2

Data001.txt に、例題文をあてはめると、 ・[ 5818f4ff ] の行と [ 5820f4ff ] は、ERROR: 行がないので読み飛ばし。 ・[ 5822f4ff ] の行以降、[ 6018f4ff ] の行までの ERROR: 行を、KT003 等のエラーコード?毎に集計する。 ・( [ 6018f4ff ] の行までに、KT003 は複数ある事もある → 集計可能) ・同様に繰り返し。 ・レコード(行)は2種類(M,Eとする)のみ。 ということでしょうか。 ---------------------------------- 上の解釈が正しいとして・・。  ・1行読み込んで、M,Eを判別する。  ・Mであったら、記録(初期化)しておいた直前の行のタイプを・・。 う~ん、これ以上考えても、解釈が間違っているかも知れないし、 >適した記述がいまいち思いつきません。 ・「適さない」記述でよいので、「ここが判らない」のコメント付きでソースを補足して下さい。 ・もちろん、いま2の思いつきをコード化したもので結構です。

回答No.1

なにがわからんのか説明されていないし、 なにを「どうかよろしくお願い」しているのかわかりません。 # 要するに"問題の丸投げ"ですか?

関連するQ&A

  • mapの使い方教えてください

    環境 Visual C++ 2008  Microsoft .NET Framework Version 3.5 まだC++をはじめたばかりでよくわかっていない初心者です。 <vector>を使ったソースは出来たのですが、<map>を使って書き直したいと思ってます。 ですがよく理解出来ずに悩んでます。 やりたいことは、 1:ファイルを読み込む 2:ファイルから必要なデータを取り出す 3:データを集計する 4:データを下のように出力する      6620f4ff   SB006  1件 読みにくいかもしれませんが、自分の書いたソースを載せておきます。 読み込むデータファイルの中身も下に載せておきます。 アドバイスをお願いします。 #include <vector> #include <fstream> #include <iostream> using namespace std; struct Record{ char mesh[10]; char err[6]; int num;  }; #define MESHKEYWORD "メッシュ" #define ERRKEYWORD "ERROR" int main() { ifstream fin(Data001.txt); if(!fin){ return 1; } char str[1024]; Record rec; vector<Record> ary; ary.clear() ; do { fin.getline(str,sizeof(str));    if(strncmp(&str[0], MESHKEYWORD,strlen(MESHKEYWORD)) == 0) { strncpy(rec.mesh,&str[10],8); rec.mesh[8] = '\0'; } if(strncmp(&str[0], ERRKEYWORD,strlen(ERRKEYWORD)) == 0) { strncpy(rec.err,&str[6],5); rec.err[5] = '\0'; bool searchresult = false; for(int i=0; i < ary.size(); i++){ if(strcmp(ary[i].mesh,rec.mesh) == 0){ if(strcmp(ary[i].err,rec.err) == 0){ ary[i].num++; searchresult = true; } } } if(searchresult == false){ rec.num = 1; ary.push_back(rec) ; } } }while(!fin.eof()); for(int i=0; i < ary.size(); i++){ cout << ary[i].mesh << '\t'; cout << ary[i].err << '\t'; cout << ary[i].num << "件\n"; } fin.close() ; ary.clear() ; return 0; } ちなみにデータファイルの中身はこんな感じです。 Data001.txt メッシュ[ 6620f4ff ]を読み込みます レベル:4 緯度方向:6144 経度方向:2560 ERROR:SB006 背景種別単位ヘッダのオフセットが不正です ERROR:KT005 データヘッダ1WのRESERVEDに設定されています ERROR:MNR08 道路図郭ノードから隣接図郭ノードへのリンク方向が異なります メッシュ[ 6622f4ff ]を読み込みます レベル:4 緯度方向:6144 経度方向:2816 メッシュ[ 5816f5ff ]を読み込みます レベル:5 緯度方向:5120 経度方向:2048 ERROR:KT005 データヘッダ1WのRESERVEDに設定されています ERROR:KT009 隣接ノード対応情報.自レベル情報.RESERVEDに設定されている ERROR:KT010 隣接ノード対応情報.下位レベル情報.下位レベルノード番ERROR:KT010 隣接ノード対応情報.下位レベル情報.下位レベルノード番

  • カーナビデータの移行

    今回車を乗り換えるに際し、旧車のナビデータ(記録した場所のデータ)を新車のナビに移したいのですが、旧車ナビでマークした位置データの緯度経度は判るので、そのデータを控えて移行しようと思ったのですが、新車のナビに緯度経度で場所を検索する機能が無い様なので、困っています。何か良い方法はありませんか? 因みに、旧車のナビはSONY(型番忘れました)、新車はWISHで、ナビはDOのNHZT-W58です。

  • C言語のプログラムを書いたのですが上手く動きません

    C言語の練習問題をプログラミングしたのですが、上手く動きません。 コンパイルはできるのですが、実行すると「Segmentation fault(core dumped)」となります。 問題は、コマンドライン引数としてファイル名を指定したテキストファイルから読み込んだデータを,双方向リストに格納し,順番に表示するというものです。 テキストファイルは 10T5001 C 10T5002 A 10T5003 B 10T5004 C 10T5005 D 10T5006 B 10T5007 A 10T5008 D このように、IDとランクをランクABCDをスペースで区切ったもので、これをランクAから順番に表示させます。 上手く動けば ID: 10T5002, grade: A, ID: 10T5007, grade: A ID: 10T5003, grade: B ID: 10T5006, grade: B ID: 10T5001, grade: C ID: 10T5004, grade: C ID: 10T5005, grade: D ID: 10T5008, grade: D と表示されるはずなんですが・・・ これが僕の書いたプログラムです(長いです。ごめんなさい) #include <stdio.h> #include <stdlib.h> #include <string.h> #define ID_LENGTH 8 /* IDの長さ+ナル文字 */ #define EFOPEN -1 #define ENOMEM -2 #define EINVAL -3 /* 双方向リストのノード */ typedef struct sList /* タグ */ { char id[ID_LENGTH]; /* ID */ char grade; /* ランク*/ struct sList *prev; /* 前のノードのアドレス */ struct sList *next; /* 次のノードのアドレス */ } sNode; /* 双方向リストのノードを作成する関数 makeNewNode() 作成したノードのprevとnextはNULLにする 引数 ・ノードに格納するID ・ノードに格納するランク(A/B/C/D) 戻値 作成したノードの先頭アドレス.メモリの確保に失敗した場合はNULL */ sNode *makeNewNode(char *id, char grade) { sNode *pNewNode; pNewNode = (sNode*)malloc(sizeof(sNode)); if(pNewNode != NULL) { strncpy(pNewNode->id, id, ID_LENGTH-1); pNewNode->grade = grade; pNewNode->prev = NULL; pNewNode->next = NULL; } return pNewNode; } /* 引数で渡された任意のノードの後ろに新しいノードを追加する関数 insertNext() 引数 ・後ろにノードを追加したいノードの先頭アドレス ・追加するノードの先頭アドレス 戻値 なし */ void insertNext(sNode *node, sNode *newNode) { if(node->next == NULL) //一番後ろに追加する場合 { node->next = newNode; newNode->prev = node; } else //まん中に挿入する場合 { newNode->prev = node; newNode->next = node->next; node->next->prev = newNode; node->next = newNode; } } /* main() 引数 int argc コマンドライン引数の数 char *argv[] 与えられたコマンドライン引数の文字列の先頭アドレスの配列 戻値 int 正常終了の時 0 以下の場合は異常終了し,括弧内の値を返す データファイルが開けなかった場合(EFOPEN) makeNewNode()でメモリが確保できなかった場合(ENOMEM) 引数の数が正しくない場合(EINVAL) */ int main(int argc, char *argv[]) { sNode *top; /* リストの先頭ノードのアドレスを保持する変数*/ sNode *new; /* 新しく作成したノードのアドレスを保持する変数 */ sNode *now; /* 現在見ているノードのアドレスを保持する変数 */ FILE *fp; /* データファイルのファイルポインタ */ char id[ID_LENGTH]; /* ファイルから読み込んだIDを一時的に保持する変数 */ char grade; /* ファイルから読み込んだランクを一時的に保持する変数 */ /* コマンドライン引数の数をチェックする 数に過不足があれば,使い方を表示し,異常終了する */ if(argc != 2){ printf("Usage: %s datafilename.\n", argv[0]); return EINVAL; } /* データファイルを読み込み用に開く ファイルが開けなかった場合,エラーメッセージを表示し異常終了する */ fp = fopen(argv[1], "r"); if(NULL == fp){ printf("No such file %s.\n", argv[1]); return EFOPEN; } /* リストの先頭に番兵を立てる */ new = makeNewNode("Banpei", 'A'-1); if (new == NULL){ printf("Error: cannot allocate memory\n"); return ENOMEM; } top = new; /* データファイルから1行ずつデータを読み込み,ランク順にリストに追加していく 既にリストの先頭には番兵ノードがある点に注意 */ while(EOF != fscanf(fp, "%s %c", id, &grade)){ new = makeNewNode(id, grade); if(new == NULL){ printf("Cannot allocate memory.\n"); return EFOPEN; } if(top->next == NULL){ //リストが空の場合 insertNext(top, new); } else{ now = top; while(new->grade > now->grade){ now = now->next; } insertNext(now, new); } } /* できあがったリストの内容を先頭から順に表示する ただし,番兵ノードは表示しない */ now = top; while(now != NULL){ printf("ID: %s, grade: %c\n",now->id, now->grade,); now = now->next; } /* リストのノードを全て(番兵ノードも含む)解放し,リストを空にする */ now = top; while(now->next != NULL){ free(now->prev); now = now->next; } free(now); fclose(fp); return (0); } まだまだ練習中なもので、かなり拙いものだと思いますが、とりあえずまずはプログラム動くようにしたいです。 よろしくお願いします。

  • RS232cと通信が可能な、CまたはC++のプログラム

    初めて投稿します。 現在卒業研究で、RS232cで接続された2次元センサ(カメラで対象物をトラッキングし、2次元座標データをPCに送る計測器)のデータをPC(OSはXP)で読み込もうとしています。 以下のサイトを見つけ、 http://7ujm.net/C++/Rs232c.h.html ソースファイルとヘッダーファイルからなるプログラムをつくり(プログラムの変更点は最後に明記しました) 、VC++とBORLANDC++で試してみたのですが VC++ではプロジェクトのビルド時に 「fatal error C1010: プリコンパイル済みのヘッダーの検索中に予期しないEOFを検出しました。」 とエラーが出てしまいます。 _tmain()関数の引数を無記入にしてみてもエラーの内容は変わりません でした。 また、BORLANDC++ではコンパイル時に 「エラー E2268 RS232.cpp 11: 未定義の関数'printf'を呼び出した(関数 tmai())」 「エラー E2268 RS232.cpp 13: 未定義の関数'gethar'を呼び出した(関数 tmai())」 となってしまい、ヘッダーファイルのみをコンパイルしても 「エラー E2141 RS232c.h 10:宣言の構文エラー」 というエラーが生じてしまいます。 念のためこちらも http://okwave.jp/qa733184.html 参考に、BORLANDの設定(bcc32.cfg ファイルの確認など、最初の設定)も確認しましたが、独習Cなどの教本に載っているプログラムでは問題なく動作します。 なお計測機器のボーレートは115200bps、ターミネータはcr(キャリッジリターン)のみで(lf(ラインフィード)が入ってもかまわない)、送信コマンドはASCII文字となっています。 ハイパーターミナル、MATLABのM-fileでの通信は確認済みです。 もしこのような環境でRS232c通信が利用可能なC(またはC++)プログラムをご存知の方がいらっしゃれば、教えていただけないでしょうか? よろしくお願いします。 「ソースファイル」 #include "RS232c.h" //このヘッダーを取り込みます。 int _tmain() { RS232c rs; rs.Connect(); rs.Send("POS#?,,1 CR/LF");//文字列を送信 Send(送信文字列) char w[100]; rs.Read(w,100); //文字列の受信 Read(char配列,読み込む文字数) printf(w); getchar(); return 0; } 「ヘッダーファイル」 #ifndef _RS_232C_H_ #define _RS_232C_H_ #if _MSC_VER > 1000 #pragma once #endif #include <windows.h> <中略> bool RS232c::Connect(char* PortNmae="COM1", int BaudRate = 115200, int ByteSize = 8, int Parity = NOPARITY, int StopBits = ONESTOPBIT, int RTS = RTS_CONTROL_DISABLE, int DTR = DTR_CONTROL_DISABLE, int ReadTimeOut =700, int WriteTimeOut = 700 ) <中略> { RS232c::~RS232c(){ //ポートを閉じます CloseHandle(m_hComm); } #endif // _RS_232C_H_

  • 座標の単位に関して

    ものすごくレベルの低い質問なんですが。。。 下記の部分のスキルが明らかに欠如していて、理解できないので、教えて頂けないでしょうか。 GIS等で利用する地図データをサンプルで入手したので、一度実際に使ってみて、試そうかと思ったのですが、 各ポイントデータの座標が秒単位で入力されていました。 つまり、普通は。。。 (例として) 経度:139度44分28秒8759 緯度:35度39分29秒1572 と、表すかと思うんですが、 サンプルデータには、 経度:502917.7212 緯度:129092.9004 と、上記の様に秒単位で記載してありました。 これって、単に時間と同じ扱いで60で2回割れば、 「139度44分28秒8759」等と同じに なるのでしょうか。 ちなみに、何で「~度」と表すのかの意味合いも 把握しきれていません。 (つまり、単位に「度」と「分及び秒」が混ざって  何で使用されているのか) そのあたりの説明もすいませんが、 行って頂けないでしょうか。 よろしくお願いします。

  • ひとつのプログラムにしたいのですが

    (1)以前GPSで取得した測位データをRS232C通信でPCに表示するプログラムを作成するに当たって、多くの方に助言を頂けたことでなんとかNMEAデータを表示できるようになりました。 (2)そこで次の段階として、取得したNMEAデータに含まれる”緯度””経度””時刻”の要素のみ取り出して表示する方法として、strtok関数を用いたプログラムを教わり、用意した文章から必要な要素のみを出力する方法も確認できました。 (1)と(2)のプログラムをあわせて、受信したデータから緯度経度時刻のみを表示するプログラムを作成したいのですが、 assignment makes pointer from integer without とコンパイル時に表示されてしまいます。ポインタの受け渡しに問題があるということでしょうか?どのように組み合わせれば受信データから必要なデータを表示できるようになるでしょうか。方法があればご教授お願いします。 以下が(1)と(2)のプログラムです。 (1)受信したデータをRS232C通信でPCに指定した行数表示するプログラム #include<unistd.h> #include<fcntl.h> #include<strings.h> #include<termios.h> #include<stdio.h> #define BAUDRATE B4800 #define MODEMDEVICE "/dev/ttyS0" int main() { int fd, c, res; int i=0; int j=0; struct termios oldtio, newtio; unsigned char buf[512]; if((fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ))==-1){ perror(MODEMDEVICE); exit(-1); } tcgetattr(fd, &oldtio); /*シリアルポートの設定を待避*/ bzero(&newtio, sizeof(newtio)); /*新しいポートの設定の構造体をクリア*/ newtio.c_cflag = (BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD);/*ボー:4800*/ newtio.c_iflag = (IGNPAR | ICRNL); newtio.c_oflag = 0; newtio.c_lflag = ICANON; tcflush(fd, TCIFLUSH); tcsetattr(fd,TCSANOW,&newtio); while (i==0) { res = read(fd,buf,512); buf[--res]=0; j++; printf("%s\n",buf); //j++; if(j==48)i++; /*NMEAセンテンス1セットは24行(12種と1行ずつのスペース)なのでここでは48行で2セット分のループ*/ } tcsetattr(fd, TCSANOW, &oldtio); close(fd); return(0); } (1)実行結果 $GPRMC,081312,A,3428.9433,N,13549.4905,E,0.0,0.0,060808,6.7,W,A*06 $GPRMB,A,,,,,,,,,,,,A,A* $GPGSA,A,3,03,06,07,,16,,21,,25,27,,,2.3,2.0,1.0*34 ・・と48行このようなNMEAセンテンスを表示します。 (2)NMEAセンテンスから時刻、緯度、経度のみを出力 #include <stdio.h> #include <string.h> #include <math.h> char buf[512]="$GPRMC,143514,A,3428.9468,N,13549.4507,E,0.0,196.2,180708,6.7,W,A*05"; /*緯度経度時刻がすべて含まれているGPRMCからデータを取得したいのでGPRMCのモデルを1行用意*/ void pnmea(void) { int utc; double lat; /*緯*/ double lon; /*経*/ char ew; /*東西*/ char ns; /*南北*/ char stat; char *p; /*一行のNMEAセンテンスから時刻緯度経度のみを取り出すために、strtokで”,”ごとのトークンを得る*/ if ((p=strtok(buf,","))==NULL) return; if (strcmp(p,"$GPRMC")!=0) return; /*センテンスの先頭は$GPRMCか?*/ if ((p=strtok(NULL,","))==NULL) return; sscanf(p,"%d",&utc); if ((p=strtok(NULL,","))==NULL) return; stat=p[0]; if ((p=strtok(NULL,","))==NULL) return; /緯度*/ sscanf(p,"%lf",&lat); if ((p=strtok(NULL,","))==NULL) return; ns=p[0]; if ((p=strtok(NULL,","))==NULL) return; /*経度*/ sscanf(p,"%lf",&lon); if ((p=strtok(NULL,","))==NULL) return; ew=p[0]; if (stat!='A') return; printf("%02d時%02d分%02d秒(UTC) ",utc/10000, (utc%10000)/100, utc%100); if (ns=='N') printf("北緯"); else if (ns=='S') printf("南緯"); printf("%.0lf度%.4lf分",floor(lat/100.0), fmod(lat,100.0)); if (ew=='E') printf("東経"); else if (ns=='W') printf("西経"); printf("%.0lf度%.4lf分",floor(lon/100.0), fmod(lon,100.0)); printf("\n"); } int main(void) { pnmea(); return 0; } (2)実行結果 14時35分14秒(UTC) 北緯34度28.9468分東経135度49.4507分 (1)で得たデータを(2)でGPRMCか判別し、必要な部分を取り出し表示 したいと考えています。よろしくお願いします。

  • char型をfloat型に変換

    GPSからシリアルポートに流れてくるコンマ区切りのフォーマットをいったんcharにいれて、トークンでぶちぶち切って、違う変数に格納したいです。 流れてくるデータは、 $GPGGA,042449.00,3449.30669291,N,13531.38645000,E,1,4,4.4,81.885,M,34.255,M,,*6D のような数値です。緯度経度や日付等のデータです。 緯度や経度の数値をfloatやdoubleに変換して変数に格納したいのですが、どうしたらよいでしょうか? そのまましたらエラーが出てしまいます。 以下は数値をブチブチ切って表示させるプログラムです。 #include <windows.h> #include <stdio.h> int main(void) { char szSend[] = "$GPGGA,000000.00,0000.00000000,N,00000.00000000,E,0,0,0.0,00.000,M,00.000,M,,*00"; char szBuf[sizeof(szSend)]="$GPGGA,042449.00,3449.30669291,N,13531.38645000,E,1,4,4.4,81.885,M,34.255,M,,*6D"; char *ptr; ptr=strtok(szBuf,","); printf("%s\n",ptr);//$GPGGA ptr=strtok(NULL,","); printf("%s\n",ptr);//時間 ptr=strtok(NULL,","); printf("%s\n",ptr);//緯度 ptr=strtok(NULL,","); printf("%s\n",ptr);//N北 ptr=strtok(NULL,","); printf("%s\n",ptr);//経度 ptr=strtok(NULL,","); printf("%s\n",ptr);//E東 ptr=strtok(NULL,","); ・ ・ ・ ・ return 0; } コンパイラはmicrosoftvisualC++6.0です。 floatとかboubleにしたいのは緯度や経度の数値を計算して扱いやすいデータにするためです。 よろしくお願いします。

  • ExcelVBAでi緯度と経度から距離を測りたい

    お世話になっております。ExcelVBAを使って2か所の 緯度と経度から距離を測定したいのですが上手くいきません。 データ(緯度と経度)が入っているセルはデータ型で小数点7ケタまで入っています。 これをVBAを使用し数値データからシリアル値に変換し計算をしたいのです。 緯度と経度から距離を求める式はヒュベニの計算式を使用しています。 公式は距離=sqrt((M*dP)*(M*dP)+(N*cos(P)*dR)*(N*cos(P)*dR))です。 P=2点の平均緯度 radians((緯度01+緯度02))*24 dP=2点の緯度差 (緯度01-緯度02)*24 dR=2点の経度差 (経度01-経度02)*24 M=子午線曲率半径 6334834/sqrt((1-0.006674*sin(P)*sin(P))^3) N=卯酉線曲率半径 6377397/sqrt(1-0.006674*sin(P)*sin(P)) 作成した関数は Function kyori(X1,Y1,X2,Y2) Dim Latit01 As Double Dim Longi01 As Double Dim Latit02 As Double Dim Longi01 As Double Dim LatitXX1 As Date Dim LongiYY1 As Date Dim LatitXX2 As Date Dim LongiYY2 As Date Dim D As Double Dim P As Double Dim dP As Double Dim dR As Double Dim M As Double Dim N As Double '値の代入 Latit01 = X1 Latit02 = X2 Longi01 = Y1 Longi02 = Y2 'シリアル値に変換 LatitXX1 = format((Latit01 /24), "[h]:mm:ss.000") LongiYY1 = format((Longi01 /24), "[h]:mm:ss.000") LatitXX2 = format((Latit02 /24), "[h]:mm:ss.000") LongiYY2 = format((Longi02 /24), "[h]:mm:ss.000") P = (Application.WorksheetFunction.Radians((LatitXX1 + LatitXX2) / 2)) * 24 dP = (LatitXX1 - LatitXX2) * 24 dR = (LongiYY1 - LongiYY2) *24 M = 6334834 / Application.WorksheetFunction.sqrt((1-0.006674 * Sin(P) * Sin(P))^3) N = 6377397 / Application.WorksheetFunction.sqrt((1-0.006674 * Sin(P) * Sin(P)) kyori = Application.WorksheetFunction.sqrt((M*dP*Application.WorksheetFunction.Pi()/180)*(M*dP*Application.WorksheetFunction.Pi()/180)+(N*sos(P)*dR*Application.WorksheetFunction.Pi()/180)*(N*cos(P)*dR*Application.WorksheetFunction.Pi/180)) これを実行するとシリアル値に変換するときに止まってしまいます。 エラーは出ず、Excekのセルには#VALUEと返されます。 どなたか教えてください。

  • GoogleMapAPI - デフォルト表示したマーカーから緯度経度を取得できない

    最近googleMapを利用しデータベースと連携して コミュニケーションツールを作れないかとあれこれ 本やネットで調べた知識でがんばっているのですが、 行き詰まってしまったのでどなたかお知恵をお貸し下さい。 ◇前提 ・googleMapのページアクセス時に  DBに登録済みのマーカー情報(緯度・経度・場所名称)を基に  複数のマーカーを表示する  ※DBとのデータ中継はPHPを使用。ここでは省略。 ◇問題点 ・表示された複数のマーカーのうちどれかをクリックしたとき  そのマーカーに付随するデータをフォーム上に表示したいが、  DBへの問い合わせに必要なクリックしたマーカーの緯度経度が  取得できない。 以下抜粋 ------------------------------------------------- // 登録済みマーカーをデフォルト表示 GDownloadUrl("load.php", function(doc, stat){ var load = doc.parseJSON(); for(var i=0; i<load.data.length; i++){ var point = new GLatLng(load.data[i].lat, load.data[i].lng); var marker = new GMarker(point); map.addOverlay(marker); // クリックしたマーカーに該当する情報を表示 GEvent.addListener(marker, "click", function(){ //*** ここで緯度経度を取得 **** } } }); ------------------------------------------------- http://oshiete1.goo.ne.jp/qa2559818.html 上記ページの質問に対する回答の方法も試しましたが、 エラーが出てしまい解決できませんでした。 プログラム素人な上、不慣れな分野にて行き詰まってます。 どうかお助け下さい。

  • 大きいサイズのxmlファイルを開けない

    xmlファイルを開こうとするのですが、サイズが大きすぎます。 サイズが124MBあり、グーグルクロームで開こうとすると10分以上かかった挙句にメモリ不足てでエラーになります。 PCのメモリは16GB積んであります。 ファイルの中身は海岸線の緯度と経度を表すテキストの羅列です。 xmlビューアーなども使ってみましたが、おそらくフォルダーが何百、何千以上に分かれており、手動ではやれそうにありません。 エクセルなどでも、フォルダー単位でしか開けないようです。 このファイルの中のテキストデータのみを一括して取り出す方法はありますでしょうか?