0

Googleマップとashxハンドラーを使用してマップ上にポイントを生成する際に問題があります。以前からよく使っていたので不思議ですが問題ありません。

ハンドラーは正常に動作しますが、ポイントがマップに表示されません。

したがって、生成されるファイルは次のとおりです。

    <?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
   <Document>
      <Placemark>
         <name>Bla</name>
         <description>&lt;div class="ExternalClassEA84F87DED7745D594D3D4236376E796"&gt;dfdfg&lt;/div&gt;</description>
         <Point>
            <coordinates>19.8106635766601,41.3390789318785</coordinates>
         </Point>
      </Placemark>
   </Document>
</kml>

注: この kml ファイルを Google サイトにアップロードし、その kml URL を使用すると、問題なく動作します:/

汎用ハンドラーを作成するために使用するコードは次のとおりです。

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

        context.Response.ContentType = "application/vnd.google-earth.kml+xml";
        context.Response.AddHeader("Content-Disposition", "attachment; filename=Pikat.kml");
        context.Response.Expires = -1;


        XmlTextWriter kml = new XmlTextWriter(context.Response.OutputStream, System.Text.Encoding.UTF8);
        kml.Formatting = Formatting.Indented;
        kml.Indentation = 3;

        kml.WriteStartDocument();

        kml.WriteStartElement("kml", "http://www.opengis.net/kml/2.2");
        kml.WriteStartElement("Document");
        String place = String.Empty;
        place = context.Request.QueryString["place"];

        if (!String.IsNullOrEmpty(place))
        {
            #region Places Of Interests

            SPListItemCollection places = this.GetPlacesOfInterest(context);
            kml = GeneratePlacemarkElementForPlaceOfInterests(kml, places, context);

            #endregion
        }



        private XmlTextWriter GeneratePlacemarkElementForPlaceOfInterests(XmlTextWriter kml, SPListItemCollection places, HttpContext context)
    {
        int i = 0;
        if (places != null)
        {
            foreach (SPListItem item in places)
            {
                kml.WriteStartElement("Placemark");
                kml.WriteAttributeString("id", String.Format("{0}", i + 1));

                // kml.WriteElementString("id", String.Format("{0}", Cases.IndexOf(item) + 1));
                kml.WriteElementString("name", item["Title"].ToString());
                string HtmlDesc = String.Format(@"<Table width='300px'>
                        <tr><td><b>Titulli: </b></td><td>{0}</td></tr>
                        <tr><td><b>Kategoria: </b></td><td>{1}</td></tr>
                        <tr><td><b>Adresa:</b> </td><td>{2}</td></tr>
                        <tr><td><b>Pershkrimi:</b> </td><td>{3}</td></tr>
                        <tr><td><b>Orari:</b> </td><td>{4}</td></tr>
                        <tr><td><b>Me shume:</b> </td><td>{5}</td></tr>
                            </table><br/>",
                                              item["Title"] == null ? "--" : item["Title"].ToString(),
                    item["Category"] == null ? "--" : item["Category"].ToString(),
                    item["Address"] == null ? "--" : item["Address"].ToString(),
                    item["Description"] == null ? "--" : item["Description"].ToString(),
                    item["HoursOfOperation"] == null ? "--" : item["HoursOfOperation"].ToString(),
                    item["SiteUrl"] == null ? "--" : item["SiteUrl"].ToString());
                kml.WriteElementString("description", HtmlDesc);
                // show the Geometry

                kml.WriteStartElement("Point");
                string x = item["Longitude"].ToString(); string y = item["Latitude"].ToString();
                kml.WriteElementString("coordinates", String.Format("{0},{1}", x, y));
                kml.WriteEndElement(); // </Point>    
                kml.WriteEndElement(); // </Placemark> 

                i++;
            }
        }
        return kml;
4

1 に答える 1

0

OK、それはばかげたファイアウォールの問題でした。他のすべては大丈夫だった

于 2013-09-04T13:10:08.573 に答える