Пример #1
0
        public void TestCreateGeoPoint()
        {
            var latitude  = 35.6585805;
            var longitude = 139.7454329;
            var geo       = new NCMBGeoPoint(latitude, longitude);

            Assert.AreEqual(latitude, geo.Latitude);
        }
Пример #2
0
        public void TestSetGeoPoint()
        {
            var latitude  = 35.6585805;
            var longitude = 139.7454329;
            var geo       = new NCMBGeoPoint(latitude, longitude);
            var item      = new NCMBObject("Item");

            item.Set("geo", geo);
            var geo1 = (NCMBGeoPoint)item.Get("geo");

            Assert.AreEqual(geo1.Latitude, geo.Latitude);
        }
Пример #3
0
 public void TestSaveGeoPoint()
 {
     Task.Run(async() =>
     {
         var latitude  = 35.6585805;
         var longitude = 139.7454329;
         var geo       = new NCMBGeoPoint(latitude, longitude);
         var item      = new NCMBObject("Item");
         item.Set("geo", geo);
         await item.Save();
         Assert.NotNull(item.Get("objectId"));
         await item.Delete();
     }).GetAwaiter().GetResult();
 }
Пример #4
0
        public void TestSearchGeoPoints()
        {
            Task.Run(async() =>
            {
                var text = File.ReadAllText("../../yamanote.json");
                var json = JArray.Parse(text);
                foreach (var x in json)
                {
                    var p    = (JObject)x;
                    var geo  = new NCMBGeoPoint((double)p["latitude"], (double)p["longitude"]);
                    var item = new NCMBObject("Station");
                    await item.Set("name", p["name"].ToString()).Set("geo", geo).Save();
                }


                var query = new NCMBQuery("Station");

                var geo1 = new NCMBGeoPoint(35.6585805, 139.7454329);
                var ary  = await query.Limit(5).Near("geo", geo1).FetchAll();

                Assert.AreEqual(5, ary.Length);
                Assert.AreEqual("浜松町", ((NCMBObject)ary[0]).Get("name").ToString());

                var geo2 = new NCMBGeoPoint(35.6654861, 139.7684781);
                var geo3 = new NCMBGeoPoint(35.6799926, 139.7357476);
                query    = new NCMBQuery("Station");
                ary      = await query.WithinSquare("geo", geo2, geo3).FetchAll();

                Assert.AreEqual(2, ary.Length);
                query        = new NCMBQuery("Station");
                var stations = await query.Limit(100).FetchAll();
                foreach (var station in stations)
                {
                    await station.Delete();
                }
            }).GetAwaiter().GetResult();
        }
Пример #5
0
        //estimatedDataのvalueの値がオブジェクト型の場合はここで変換
        private static IDictionary <string, object> _encodeJSONObject(object value, bool allowNCMBObjects)
        {
            //日付型をNifty仕様に変更してクラウドに保存
            if (value is DateTime)
            {
                DateTime dt = (DateTime)value;
                Dictionary <string, object> Datedic = new Dictionary <string, object> ();
                string iso = dt.ToString("yyyy-MM-dd'T'HH:mm:ss.fff'Z'");
                Datedic.Add("__type", "Date");
                Datedic.Add("iso", iso);
                return(Datedic);
            }
            if (value is NCMBObject)
            {
                NCMBObject obj = (NCMBObject)value;
                if (!allowNCMBObjects)
                {
                    throw new ArgumentException("NCMBObjects not allowed here.");
                }
                //GetRelationなどしたオブジェクトが未保存の場合はエラー
                if (obj.ObjectId == null)
                {
                    throw new ArgumentException("Cannot create a pointer to an object without an objectId.");
                }
                Dictionary <string, object> NCMBDic = new Dictionary <string, object> ();
                NCMBDic.Add("__type", "Pointer");
                NCMBDic.Add("className", obj.ClassName);
                NCMBDic.Add("objectId", obj.ObjectId);
                return(NCMBDic);
            }
            if (value is NCMBGeoPoint)
            {
                NCMBGeoPoint point = (NCMBGeoPoint)value;
                Dictionary <string, object> GeoDic = new Dictionary <string, object> ();
                GeoDic.Add("__type", "GeoPoint");
                GeoDic.Add("latitude", point.Latitude);
                GeoDic.Add("longitude", point.Longitude);
                return(GeoDic);
            }


            if (value is IDictionary)
            {
                Dictionary <string, object> beforeDictionary = new Dictionary <string, object> ();
                IDictionary afterDictionary = (IDictionary)value;
                foreach (object key in afterDictionary.Keys)
                {
                    if (key is string)
                    {
                        beforeDictionary [(string)key] = _maybeEncodeJSONObject(afterDictionary [key], allowNCMBObjects);
                    }
                    else
                    {
                        throw new NCMBException(new ArgumentException("Invalid type for key: " + key.GetType().ToString() + ".key type string only."));
                    }
                }

                return(beforeDictionary);
            }

            if (value is NCMBRelation <NCMBObject> )
            {
                NCMBRelation <NCMBObject> relation = (NCMBRelation <NCMBObject>)value;
                return(relation._encodeToJSON());
            }

            if (value is NCMBACL)
            {
                NCMBACL acl = (NCMBACL)value;
                return(acl._toJSONObject());
            }
            return(null);
        }